我正在开发一个引用第三方API的Web服务。调用方法时,将在相应的事件处理程序中获取结果。用户需要订阅事件才能获得结果。 Webservice公开了一个方法,例如Method1(带有[webmethod]属性),它调用API方法。 API调用的结果是在webservice developer创建的事件处理程序中获得的。现在任何客户端使用web服务都可以调用Method1。当客户端使用启用异步操作的Web服务时,.NET会为每个方法创建完成的事件。在我的例子中,将有“Method1Async”方法和“Method1CompletedEvent”。已完成的事件结果返回方法的类型。如何返回在事件处理程序中获得的结果?
答案 0 :(得分:1)
尝试使用ManualResetEvent
[WebMethod]
public object Method1()
{
object result = null;
var resetEvent = new ManualResetEvent(false);
var obj = new (3rd party object);
obj.(3rd party event) += (paras) =>
{
result = (3rd party result which in paras);
resetEvent.Set();
};
obj.method(...);
resetEvent.WaitOne();
return result;
}