C# 在.net Webservice中引用.net DLL

C# 在.net Webservice中引用.net DLL,c#,.net,web-services,events,C#,.net,Web Services,Events,我正在开发一个Web服务,它引用了第三方API。调用方法时,将在相应的事件处理程序中获得结果。用户需要订阅事件才能获得结果。Webservice公开了一个调用API方法的方法,比如Method1(带有[webmethod]属性)。API调用的结果在webservice developer创建的事件处理程序中获得。现在,任何使用Web服务的客户端都可以调用Method1。当客户端使用支持异步操作的webservice时,.NET会为每个方法创建完成的事件。在我的例子中,将有“Method1Asyn

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

尝试使用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;
}

尝试使用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;
}