- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是 another SO question 的后续问题关于在异步回调函数上使用异步包装器。
这是目前的代码(@Servy 提供的优秀解决方案):
static Task<ObservableCollection<MyResult>> GetMyDataAsync(Params p)
{
var tcs = new TaskCompletionSource<ObservableCollection<MyResult>>();
DoStuffClass stuff = new DoStuffClass();
stuff.LoadCompleted += (args) => tcs.TrySetResult(args.Result);
stuff.LongDrawOutProcessAsync(p);
return tcs.Task;
}
所以,我的问题是 LoadCompleted 事件;这是签名:
public event EventHandler<MyArgs> LoadCompleted;
MyArgs
包含一个名为 ResultCollection 的属性;但是,像这样更改代码不起作用:
stuff.LoadCompleted += (args) => tcs.TrySetResult(args.ResultCollection);
事实上,我得到了错误:
'System.EventHandler<MyArgs>' does not take 1 arguments
我可以从签名中看出是否正确;那么如何将 LoadCompleted 结果设置为 TaskCompletionSource
?
最佳答案
EventHandler需要 2 个参数,第一个是引发事件的实例,第二个是事件参数。即使您只使用一个 (args
),也需要同时指定它们。这应该有效:
stuff.LoadCompleted += (sender, args) => tcs.TrySetResult(args.Result);
关于c# - 使用 TaskCompletionSource.TrySetResult() 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20955125/
如何判断 TaskCompletionSource.TrySetResult 发起的延续是同步执行还是异步执行? 例如: // class A void RegisterNotification(Ta
这是 another SO question 的后续问题关于在异步回调函数上使用异步包装器。 这是目前的代码(@Servy 提供的优秀解决方案): static Task> GetMyDataAsyn
我有一个使用 TaskCompletionSource 包装回调的方法,如下所示: public Task TestMethod(int argument) { var tcs = new T
我正在努力思考 TPL、C# 5 中新的 async/await 特性,以及 TaskCompletionSource. 我不清楚的一件事是何时使用 SetResult、SetException 和
我是一名优秀的程序员,十分优秀!