2

我正在使用.NET 3.5 是一个相关的问题,但使用的是 TPL 异步库,因为我在 3.5 中,所以我需要另一种方法。

我曾经通过添加服务引用并使用 Visual Studio 2010 创建其异步操作来异步调用 WCF。

现在我已经使用类创建了一个动态代理CreateChannel<T>ChannelFactory我需要以异步方式调用一个方法。这就是我创建 WCF 代理的方式:

    public MyInterface Proxy { get; set; }

    BasicHttpBinding binding = new BasicHttpBinding();
    EndpointAddress ep = new EndpointAddress("http://localhost/myEndpoint");
    Proxy = ChannelFactory<MyInterface>.CreateChannel(binding, ep); 

    // I call my method
    Proxy.MyMethod();

    [ServiceContract]
    public Interface MyInterface
    {
      [OperationContract]
      void MyMethod();
    }

我不需要服务响应。

4

1 回答 1

1

我不确定我是否理解正确,但如果你想让你的 Proxy.MyMethod 通过 .NET 3.5 异步运行,你可以使用 Delegate 类的标准 BeginInvoke,如下所示:

 //Make a delegate for your Proxy.MyMethod
 private delegate void MyDelegate();

然后在代码中,你只需调用你的方法异步:

BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress ep = new EndpointAddress("http://localhost/myEndpoint");
Proxy = ChannelFactory<MyInterface>.CreateChannel(binding, ep); 
var delInstance = new MyDelegate(Proxy.MyMethod);
var result = delInstance.BeginInvoke();

如果您需要检查有关结果的内容,请为此使用结果变量

于 2013-07-16T06:47:04.690 回答