Задержка в задании - PullRequest
0 голосов
/ 10 мая 2018

Невозможно получить задержку в задании.
Синхронизация вообще не задерживается.
Async останавливается на await Task.Delay(delay);.

Я пытался:

Task wait4me = Task.Delay(1000);
await wait4me;

и это не сработало - оно останавливается на await wait4me;.

Task<int> TaskOfTResult_MethodSync(int delay)
{
    Debug.WriteLine($"TaskOfTResult_MethodSync delay = {delay}  {DateTime.Now}");
    int hours = 10; 
    Task.Delay(delay);
    Debug.WriteLine($"TaskOfTResult_MethodSync after delay  {DateTime.Now}");
    return Task.FromResult(hours);
}
async Task<int> TaskOfTResult_MethodAsync(int delay)
{
    Debug.WriteLine($"TaskOfTResult_MethodAsync  delay = {delay}   {DateTime.Now}");
    await Task.Delay(delay);
    Debug.WriteLine($"After await Task.Delay({delay})  {DateTime.Now}");
    int hours = 11;
    return hours;
}

Тест

Task<int> task = TaskOfTResult_MethodSync(1000);
Debug.WriteLine("before task.Wait");
task.Wait();
Debug.WriteLine("after  task.Wait");
int i = task.Result;
Debug.WriteLine($"i = {i}");
Debug.WriteLine($"");


Task<int> taskA = TaskOfTResult_MethodAsync(1000);
Debug.WriteLine("before taskA.Wait");
taskA.Wait();
Debug.WriteLine("after  taskA.Wait");
i = taskA.Result;
Debug.WriteLine($"i = {i}");
Debug.WriteLine($"");

1 Ответ

0 голосов
/ 10 мая 2018

Вы можете просто сделать это как

Task.Delay(delay).Wait()
...