从 void 异步方法获取 return 值
Get return value from void Async Method
我有一个 Web 服务 (WSDL) 和一些无效的异步方法(我无法将其更改为 return 任务)来调用更长的请求。
如何从这些方法中获取结果值?
在 Web 服务上,我有一些 EventHandlers、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 收到 Completed 状态时调用 return 方法。
我有一个 Web 服务 (WSDL) 和一些无效的异步方法(我无法将其更改为 return 任务)来调用更长的请求。
如何从这些方法中获取结果值?
在 Web 服务上,我有一些 EventHandlers、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 收到 Completed 状态时调用 return 方法。