gpt4 book ai didi

WCF 命名管道客户端通知/检测管道状态更改

转载 作者:行者123 更新时间:2023-12-04 20:41:37 25 4
gpt4 key购买 nike

我有两个 .NET C# windows 窗体应用程序,它们通过 WCF 命名管道相互通信。其中一个应用程序托管 WCF 服务,另一个是客户端。通信工作正常,客户端可以调用服务方法和回调工作正常等。但是,我遇到的一个问题是如果主机应用程序关闭,客户端无法检测到管道不再可用。我已经尝试在管道上为所有事件(关闭、关闭、故障)注册事件处理程序,但是当主机应用程序关闭时,这些事件处理程序永远不会被调用。此外,如果我尝试使用 pipe.State 属性检查客户端中的管道状态,即使管道出现故障,我也会返回 Opened 状态。然后,如果我尝试调用服务方法,它当然会抛出异常。我要么需要通知我的客户端应用程序服务正在关闭、关闭或出现故障,要么我需要能够在调用每个服务方法之前检测到它。

有人有这种情况的任何工作示例吗?

最佳答案

在 .NET 3.5 上通过命名管道使用 WCF 适合我。这是一个例子

    public ClientUpdaterTray()
{
InitializeComponent();
InstanceContext context = new InstanceContext(new ClientUpdaterServiceCallback());
client = new ClientUpdaterTrayServiceClient(context);

client.InnerChannel.Faulted += new EventHandler(InnerChannel_Faulted);
client.InnerDuplexChannel.Faulted += new EventHandler(InnerDuplexChannel_Faulted);
}

void InnerDuplexChannel_Faulted(object sender, EventArgs e)
{
// Connection faulted
}

void InnerChannel_Faulted(object sender, EventArgs e)
{
// Connection faulted
}

关于WCF 命名管道客户端通知/检测管道状态更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1506159/

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