为了账号安全,请及时绑定邮箱和手机立即绑定

从主机 WinForms 程序访问自承载 WCF 服务

从主机 WinForms 程序访问自承载 WCF 服务

C#
aluckdog 2021-11-07 19:27:13
我创建了一个 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");    }
查看完整描述

1 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

已编辑的原始帖子中概述的解决方案 - 将主机窗口的引用设置为主机窗口类的静态成员。


查看完整回答
反对 回复 2021-11-07
  • 1 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信