gpt4 book ai didi

c# - 使用 ChannelFactory 在没有服务引用的情况下调用异步 WCF

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:23 25 4
gpt4 key购买 nike

我正在使用 .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();
}

我不需要服务响应。

最佳答案

我不确定我是否理解正确,但如果你想让你的 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();

如果您需要检查结果,请为此使用结果变量

关于c# - 使用 ChannelFactory 在没有服务引用的情况下调用异步 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17658770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com