C# 使用TaskCompletionSource.TrySetResult()时出错

C# 使用TaskCompletionSource.TrySetResult()时出错,c#,.net,asynchronous,arguments,C#,.net,Asynchronous,Arguments,这是关于在异步回调函数上使用异步包装的后续问题 以下是目前的代码(由@Servy提供的优秀解决方案): 事实上,我得到了一个错误: 'System.EventHandler<MyArgs>' does not take 1 arguments “System.EventHandler”不接受1个参数 从签名上看是否正确;因此,如何将LoadCompleted结果设置为TaskCompletionSource?需要两个参数,第一个是引发事件的实例,第二个是事件参数。即使只使用一个(

这是关于在异步回调函数上使用异步包装的后续问题

以下是目前的代码(由@Servy提供的优秀解决方案):

事实上,我得到了一个错误:

'System.EventHandler<MyArgs>' does not take 1 arguments
“System.EventHandler”不接受1个参数
从签名上看是否正确;因此,如何将LoadCompleted结果设置为
TaskCompletionSource

需要两个参数,第一个是引发事件的实例,第二个是事件参数。即使只使用一个(
args
),也需要同时指定这两个参数。 这应该起作用:

stuff.LoadCompleted += (sender, args) => tcs.TrySetResult(args.Result);

这将解决您的问题

如果查看
EventHandler
定义,您将看到它包含两个参数

public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);

几秒钟就把我抓住了
'System.EventHandler<MyArgs>' does not take 1 arguments
stuff.LoadCompleted += (sender, args) => tcs.TrySetResult(args.Result);
stuff.LoadCompleted += (sender, args) => tcs.TrySetResult(args.Result);
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);
stuff.LoadCompleted += (sender, args) => tcs.TrySetResult(args.Result);