使用ChannelFactory在没有服务引用的情况下调用异步WCF
本文关键字:情况下 调用 异步 WCF 引用 服务 ChannelFactory 使用 | 更新日期: 2023-09-27 18:22:20
我正在使用.NET 3.5这是一个相关的问题,但使用TPL异步库,因为我在3.5中,我需要另一种方法。
我过去常常通过添加服务引用并使用VisualStudio2010创建其异步操作来异步调用WCF。
现在,我已经使用ChannelFactory
类的CreateChannel<T>
创建了一个动态代理,并且我需要以异步方式调用一个方法。这就是我创建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();
}
我不需要服务响应。
我不确定我是否正确理解了你,但如果你想让你的Proxy.MyMethod通过.NET 3.5异步运行,你可以使用Delegate类的standart BeginInvoke,如下所示:
//Make a delegate for your Proxy.MyMethod
private delegate void MyDelegate();
然后在代码中,您只需调用方法async:
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();
如果您需要检查一些关于结果的信息,请为此使用result变量