我创建了一个 Windows 窗体应用程序来运行 WCF 服务,该服务基本上完全由在同一台机器上运行的单个软件使用,我还希望托管应用程序充当“仪表板”,将显示为透明起见,有关请求的相关状态更新。然而,尽管 Windows 窗体应用程序用于启动和停止服务,但我无法以任何其他有意义的方式与其交互。一些笔记/我尝试过的:该服务只能由一个程序访问(可能除了托管程序)该服务设置为使用 InstanceContextMode.Single,但 ServiceHost 对象的 SingletonInstance 属性始终为空。将服务引用添加到它自己的托管服务会导致主机程序无响应(可能不是意外)。我为含糊不清表示歉意,但我基本上尝试访问服务对象,然后访问服务本身。我错过了什么还是有更好的方法来做到这一点?谢谢,GBB编辑:为了清楚起见/我结束的解决方案 - 将主机窗口引用设置为服务可访问的主机窗口类的静态成员。public partial class frmMainWindow : Form{ public static frmMainWindow CurrentInstance; ServiceHost serviceHost; public frmMainWindow () { InitializeComponent(); CurrentInstance = this; } void StartService() { // service host stuff here for starting TestServer service } void StopService() { // stop the service } // update the status textbox in the host form public void SetStatus(string status) { textStatus.Text = status; }[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]public class TestServer : ITestServer{ frmMainWindow HostWindow = null; public TestServer () { HostWindow = frmMainWindow .CurrentInstance; HostWindow.SetStatus("Service started"); }
添加回答
举报
0/150
提交
取消