Я некоторое время пытался получить что -то, что я думал, было бы просто работать с .net 4.5 < /p>
Я хочу снять две длинные задачи с той же Время и собирайте
в лучшем случае C# 4.5 (rtm) < /p>
Следующее работает, но мне это не нравится, потому что:
[*] Я хочу сон , чтобы быть асинхронным методом, чтобы он мог ждать Другие методы
[*] Это просто выглядит неуклюже с task.run ()
[*] Я не думаю, что это даже использует какие -либо новые языковые функции!
< /ul>
Рабочий код: < /strong> < /p>
public static void Go()
{
Console.WriteLine("Starting");
var task1 = Task.Run(() => Sleep(5000));
var task2 = Task.Run(() => Sleep(3000));
int totalSlept = task1.Result + task2.Result;
Console.WriteLine("Slept for a total of " + totalSlept + " ms");
}
private static int Sleep(int ms)
{
Console.WriteLine("Sleeping for " + ms);
Thread.Sleep(ms);
Console.WriteLine("Sleeping for " + ms + " FINISHED");
return ms;
}
< /code>
не работающий код: < /strong> < /p>
Обновление: это действительно работает и Это правильный способ сделать это, единственная проблема - это Thread.sleep
Этот код не работает, потому что вызов (5000) немедленно запускает задачу, работающую, поэтому Sleep (1000) не работает до тех пор, пока не будет завершена. Это верно, даже если Sleep является Async , и я не использую await или вызов .result слишком скоро.
Я подумал, что, может быть, есть способ получить непрерывную задачу , вызывая метод Async , чтобы я мог затем вызовать start () по двум задачам, Но я не могу понять, как получить задачу < /code> от вызова асинхрочного метода. < /p>
public static void Go()
{
Console.WriteLine("Starting");
var task1 = Sleep(5000); // blocks
var task2 = Sleep(1000);
int totalSlept = task1.Result + task2.Result;
Console.WriteLine("Slept for " + totalSlept + " ms");
}
private static async Task Sleep(int ms)
{
Console.WriteLine("Sleeping for " + ms);
Thread.Sleep(ms);
return ms;
}
Подробнее здесь: https://stackoverflow.com/questions/123 ... in-net-4-5
Запустите две асинхронные задачи параллельно и собирайте результаты .NET 4.5 ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Запустите две асинхронные задачи параллельно и собирайте результаты .NET 4.5
Anonymous » » в форуме C# - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-