Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Start()方法和已完成事件包装到任务中_C#_.net_Microsoft Metro - Fatal编程技术网

C# 将Start()方法和已完成事件包装到任务中

C# 将Start()方法和已完成事件包装到任务中,c#,.net,microsoft-metro,C#,.net,Microsoft Metro,我正在将一个应用程序从Silverlight迁移到Windows 8,我想利用System.Theading.Tasks API。我有很多类,它们有一个Start()方法,完成后会触发一个已完成的事件。有人知道如何将其包装在任务中吗 传统的异步模式是每个异步调用的开始和结束方法。您可以使用FromAsync方法将其包装到任务中 。您可以使用相同的函数,但可以使用Start和End方法。您可以使用该类。它将允许您手动控制任务的完成 例如: var tcs = new TaskCompletionS

我正在将一个应用程序从Silverlight迁移到Windows 8,我想利用System.Theading.Tasks API。我有很多类,它们有一个Start()方法,完成后会触发一个已完成的事件。有人知道如何将其包装在任务中吗

传统的异步模式是每个异步调用的开始和结束方法。您可以使用FromAsync方法将其包装到任务中

。您可以使用相同的函数,但可以使用Start和End方法。

您可以使用该类。它将允许您手动控制任务的完成

例如:

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

return tcs.Task;
var tcs=new TaskCompletionSource();
myService.Completed+=(发送方,args)=>{tcs.SetResult(args.Value)};
myService.Start();
返回tcs.Task;

不幸的是,许多框架元素不支持该模型。例如,WPF动画元素只是从Start()返回void。这不会泄漏任务吗?