C# 从void异步方法获取返回值

C# 从void异步方法获取返回值,c#,web-services,asynchronous,wsdl,void,C#,Web Services,Asynchronous,Wsdl,Void,我有一个Web服务(WSDL)和一些无效的异步方法(我不能将其更改为返回任务)来调用更长的请求 如何从该方法中获取结果值 在Web服务上,我有一些EventHandler、EventArgs(我需要在EventHandle委托上使用它们) 所以最基本的问题是,我怎样才能从这些线索中得出结果 到目前为止,我有以下几点: //Methods signatures getSomethingCompletedEventArgs(object[] results, Exception, bool, obj

我有一个Web服务(WSDL)和一些无效的异步方法(我不能将其更改为返回任务)来调用更长的请求

如何从该方法中获取结果值

在Web服务上,我有一些EventHandler、EventArgs(我需要在EventHandle委托上使用它们)

所以最基本的问题是,我怎样才能从这些线索中得出结果

到目前为止,我有以下几点:

//Methods signatures
getSomethingCompletedEventArgs(object[] results, Exception, bool, object userState)
getSomethingCompletedHandler(object sender, Service.getSomethingCompletedEventArgs)

//Didn't build
Service srv = new Service()
srv.getSomethingCompleted += new getSomethingCompletedEventHandler(srv.getSomethingAsync);

//Other try
var args = new getSomethingCompletedEventArgs(null, new Exception(), false, "");
//Didn't build too (Method name expected)    
srv.getSomethingCompleted += new getSomethingCompletedEventHandler(args);


//This built, but I don't know how to get the results
public async static void GetSomething()
{
   await Task.Run(() => srv.getSomethingAsync(arg1,arg2,arg3));
}

因此,我缺少一个实现回调并委托它的方法

Service srv = new Service();

src.getSomethingCompleted += returnMethod;

Task.Run(() => srv.getSomethingAsync(arg1, arg2, arg3));

private static void returnMethod(object sender, getSomethingCompletedEventArgs e)
{
    var result = e.Result.items.ToList();
}

当getSomethingAsync接收到已完成状态时,将调用return方法。

void
方法没有返回值,您认为可以从中获得什么?如果没有更多关于您的应用程序实际运行的相关信息,甚至很难理解您的问题。当您发出任何异步请求时,必须指定一个“回调”,该回调最终将接收指示成功或失败的“事件”。在上面标记为“Other try”等的各种代码中,看起来您在或多或少地朝着正确的方向蹒跚而行,但还没有完全正确,而且放弃得太快。DavidG,发出请求的调用可能确实正确地为
void
,因为它们不返回值。当某个预期事件发生时,将在未来某个未知时刻提供可能“返回”的值。这些值将是与事件一起提供给这些处理程序的数据的一部分。@MikeRobinson我搜索了很多,我真的认为“另一个尝试”是正确的路径。。。但是我还没有意识到我遗漏了什么……那些“
+=
”对我来说似乎有点滑稽,但是,“你知道,只是用谷歌搜索一下。”:-)在找到一个现有的、有效的例子之前,请浏览。(也许在GitHub上?)将它与您的并排比较。当你还不太熟悉这种语言,不能“本能地”做事的时候,这比用你的头撞它要快得多。去寻找一些已经有效的方法。盯着它看。复制它。