在Task中包装Start()方法和Completed事件

时间:2011-12-26 20:30:06

标签: c# .net microsoft-metro

我正在将应用程序从Silverlight迁移到Windows 8,我想利用System.Theading.Tasks API。我有许多具有Start()方法的类,并在完成时触发Completed事件。谁会知道如何在任务中包装它?

2 个答案:

答案 0 :(得分:1)

传统的异步模式是每个异步调用的Begin和End方法。您可以使用FromAsync方法将其包装在任务中。

Here you can find some documentation。您可以使用相同的功能,但随后使用Start和End方法。

答案 1 :(得分:0)

您可以使用TaskCompletionSource<TResult>课程。它将允许您手动控制任务的完成。

例如:

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

return tcs.Task;