Я пытаюсь поднять голову и асинхронно, поэтому я написал это небольшое тестовое приложение, но ожидаемого я не ожидал.Задача не дожидаясь завершения
Вместо того, чтобы ждать завершения задачи, программа продолжает выполнять.
class Program
{
static void Main(string[] args)
{
var task = new Task(Run);
task.Start();
task.Wait();
Console.WriteLine("Main finished");
Console.ReadLine();
}
public async static void Run()
{
var task = Task.Factory.StartNew(() =>
{
Console.WriteLine("Starting");
Thread.Sleep(1000);
Console.WriteLine("End");
});
await task;
Console.WriteLine("Run finished");
}
}
Выход
Main finished
Starting
End
Run finished
Если я своп 'ждут задания' за 'task.Await()' это то работает, как я ожидал бы производить
Starting
End
Run finished
Main finished
Я надеюсь, что эта ссылка поможет вам http://stackoverflow.com/a/9519578/2798643 –
У меня есть [async intro blog post] (http://blog.stephencleary.com/2012/02/async- и-await.html), которые могут оказаться полезными. Обратите внимание, что ваш код [не должен использовать конструктор задачи] (http://blog.stephencleary.com/2014/05/a-tour-of-task-part-1-constructors.html) [или 'Task.Factory. StartNew'] (http://blog.stephencleary.com/2013/08/startnew-is-dangerous.html) (обе ссылки на мой блог). –