我想要实现的简化版本:
- 我有一个在后台运行隐藏(可见 = false)的 WinForms 应用程序。
- 它只有一个表格,我保留了默认名称 - Form1
- 此 WinForms 应用托管 WCF 服务。现在我们将其称为监听器服务。
- 此侦听器服务有一个名为“DisplayAlert()”的函数,它作为服务函数公开
- 位于另一台计算机上的应用通过标准 WCF 服务调用向侦听器服务发送消息
我已经完成了上述所有工作。在调用 DisplayAlert() 函数时,我可以单步执行代码并观察消息流。
我想不通,我不敢相信很难找到如何做这么简单的事情:
- 我希望托管服务中的 DisplayAlert() 函数直接与托管它的 WinForm 交互以使表单可见。
我要做的就是将 Visibility 设置为 true,然后在 WinForm 上调用另一个函数。
在我看来,这应该像添加对表单的引用一样简单,或者在表单上创建一个公共函数并从服务类调用它,但我什至不知道如何从服务中引用 Form1班级。
我错过了一些明显的东西吗?我什至如何引用托管服务的 Form1 的实例?
我已经走上了……的路。
- 在ListenerService(AlertReceived,virtual void OnAlertReceived)中创建一个事件,认为在Form上,我可以添加一个事件处理程序。
- 没有骰子。我没有直接实例化 ListenerService 类,它在 ServiceHost 中运行。
- 试图从类中引用 Application 对象,认为我可以将其引用为 Application.Form1,但不是。我什至无法从服务类中看到 Application 对象。
- 我可能在这里遗漏了一些明显的东西,但我不确定。
还有其他建议吗?
如果有帮助,我可以添加代码。