在.net Webservice中引用.net DLL

时间:2013-09-19 07:48:51

标签: c# .net web-services events

我正在开发一个引用第三方API的Web服务。调用方法时,将在相应的事件处理程序中获取结果。用户需要订阅事件才能获得结果。 Webservice公开了一个方法,例如Method1(带有[webmethod]属性),它调用API方法。 API调用的结果是在webservice developer创建的事件处理程序中获得的。现在任何客户端使用web服务都可以调用Method1。当客户端使用启用异步操作的Web服务时,.NET会为每个方法创建完成的事件。在我的例子中,将有“Method1Async”方法和“Method1CompletedEvent”。已完成的事件结果返回方法的类型。如何返回在事件处理程序中获得的结果?

1 个答案:

答案 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;
}