我正在使用 .NET 3.5 This是一个相关的问题,但使用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();
}
我不需要服务响应。
答案 0 :(得分: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();
如果您需要检查有关结果的内容,请使用结果变量