Выполнение длительных задач без зависания пользовательского интерфейса

Я пытаюсь выполнить действие в фоновом режиме, не замораживая пользовательский интерфейс.

Конечно, я мог бы использовать для этого BackgroundWorker.

Однако я хотел бы сделать это только с помощью Task API.

Я пробовал:

async void OnTestLoaded(object sender, RoutedEventArgs e)
{
   await LongOperation();
}
// It freezes the UI

и

async void OnTestLoaded(object sender, RoutedEventArgs e)
{
   var task = Task.Run(()=> LongOperation());
   task.Wait();
}


// It freezes the UI

Значит, мне вернуться к BackgroundWorker? Или есть решение, использующее только Задачи?

8
задан user380719 8 April 2012 в 17:54
поделиться