Оберните метод Start () и Завершенное событие в Задаче - PullRequest
2 голосов
/ 27 декабря 2011

Я переносу приложение из Silverlight в Windows 8 и хочу воспользоваться API-интерфейсом System.Theading.Tasks. У меня есть несколько классов, которые имеют метод Start () и запускают событие Completed, когда они сделаны. Кто-нибудь знает, как обернуть это в задание?

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

Традиционным асинхронным шаблоном был метод Begin и End для каждого асинхронного вызова.Вы можете заключить это в Задачу с помощью метода FromAsync.

Здесь вы можете найти некоторую документацию .Вы можете использовать ту же функцию, но затем с методами Start и End.

0 голосов
/ 15 мая 2012

Вы можете использовать класс TaskCompletionSource<TResult>.Это позволит вам вручную контролировать выполнение вашей задачи.

Например:

var tcs = new TaskCompletionSource<int>();
myService.Completed += (sender,args) => { tcs.SetResult(args.Value) };
myService.Start();

return tcs.Task;
...