我已经创建了一个Windows Forms应用程序来运行WCF服务,该服务基本上将完全由在同一台计算机上运行的单个软件所消耗,并且我也希望托管应用程序充当“仪表板”为了透明起见,它将显示有关传入请求的相关状态更新。但是,尽管使用Windows Forms应用程序启动和停止该服务,但我无法使其以任何其他有意义的方式与之交互。
一些笔记/我尝试过的事情:
我对此含糊其词表示歉意,但基本上来说,我在访问服务对象以及服务本身方面先后采取了行动。我是否缺少某些东西,或者有完全更好的方法吗?
谢谢
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 :(得分:0)
编辑后的原始帖子中概述的解决方案-将对宿主窗口的引用设置为宿主窗口类的静态成员。