Для примера рассмотрим:Должен ли я когда-либо нуждаться в задачах `await` для шаблона посетителя?
public class Student
{
public async Task Run()
{
var rand = new Random();
while (true)
{
await ReadBook();
await Task.Delay(rand.Next(4000));
}
}
public async Task ReadBook()
{
// ...
}
}
class Main
{
async Task Run()
{
var s1 = new Student();
var s2 = new Student();
s1.Run();
s2.Run();
while (true)
{
Console.WriteLine("Books read: {0}", GetReadBooks());
await Task.Delay(10000);
}
}
int GetReadBooks()
{
return 1;
}
}
Нужно ли мне ждать Student.Run()
, или даже сохранить ссылку на возвращаемом задачи на всех? Я понимаю необходимость, если я когда-либо захочу отменить задачу; Я подозреваю, что мне также нужно дождаться этого, чтобы получить какие-либо исключения, брошенные Student.Run()
, но кроме того, мне все равно, чем эти задачи?
Вы никогда не должны оставлять свои исключения незаметными. То, что обработка исключений, должна быть достаточной причиной, чтобы оставаться с 'await' даже без каких-либо других причин. – hvd
Рассмотрите это скорее из академического вопроса; Я ожидаю, что в конечном итоге буду ждать и исключения. – Rollie
В этом вопросе нет шаблона посетителя. Пожалуйста, измените заголовок и удалите тег. – Euphoric