這是關於在異步回調函數上使用異步包裝的another SO question的後續問題。使用TaskCompletionSource.TrySetResult()的錯誤
下面是代碼,因爲它代表(由@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
?
讓我過了幾秒 –
@ AZ.next時間... – i3arnon
但我想這並不能阻止別人.... – i3arnon