Я сделал немного кода. Он имитирует задержку. Но метод Wait() может быть асинхронным, поэтому в нем будет установлен async. Но теперь внутри Wait() нужно быть instrunction. Как мне сделать такую функцию. Я что-то вроде Func<int> func = new Func<int>(getWaitingTime);
Но я не уверен, и этого недостаточно.Delay Program visual C#
public class speed
{
public int Id { get; set; }
public speed(int id)
{
this.Id = id;
}
public async void wait() //here is the problem
{
int waitingTime = getWaitingTime();
Console.Writeline("string.Format("Done with {0}: {1} ms", this.Id, waitingTime));
}
private int getWaitingTime()
{
int waitingTime = new Random().Next(2000);
System.Threading.Thread.Sleep(waitingTime);
return waitingTime;
}
}
for (int counter = 0; counter < 10; counter++)
{
speed slow = new speed(counter);
slow.wait();
}
'async' не делает функцию асинхронной, она позволяет * ждем * уже асинхронных вызовов методов. Почему бы вам не использовать 'Task.Delay()' в любом случае, например 'waitait Task.Delay (1000)'? –
Также избегайте методов async void, если вы не знаете, что они вам нужны. 'async void' предназначен только для обработчиков событий или методов, подобных обработчикам событий. Любой другой метод должен вернуть задачу –
. Я не уверен, и этого недостаточно. Почему вы ** не уверены **? Запустили ли вы свой код, генерирует ли оно исключение? Если да, то? Кажется, он работает? Иногда это работает? ** В каком смысле вы _unsure _? ** –