我创建了一个 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");
}
天涯尽头无女友
相关分类