【发布时间】:2018-05-14 07:45:29
【问题描述】:
我正在开发一个监视消息队列 (RabbitMQ) 的 Windows 服务。每当有消息在消息队列中排队时,Windows 服务中将触发一个事件,并启动一个 Windows 窗体应用程序,该应用程序将队列的消息作为命令行参数。
所有的编码部分都很好。在调试模式下,我已经验证了在队列中找到消息时是否触发了事件,是的,它确实触发了事件回调。但是当事件被触发时,我没有看到弹出窗口。以下是我尝试执行 windows 窗体的方式。
Process process = new Process();
process.EnableRaisingEvents = true;
process.Exited+= <exit event handler>
process.Start(new ProcessStartInfo(){
CreateNoWindow=true,
UseShellExecute=false,
ErrorDialog=true,
FileName = "<path to the .exe file of windows form>",
WindowStyle=ProcessWindowStyle.Hidden
});
process.WaitForExit();
我什至没有看到任何错误抛出或登录 EventViewer。感谢您提供这方面的任何帮助。
【问题讨论】:
-
作为一种规范,服务不会与桌面交互,因为它们处于 UI 不可用的级别
-
从服务中启动进程到底有什么问题?也许只是 Windowstyle 不应该是“隐藏的”
-
@nabuchodonossor 我也试过了,但还是没有运气。我只需要从 Windows 服务启动 GUI 应用程序。
-
@praveen:我刚刚了解到,用户交互的限制包括启动程序。我认为你必须做一些技巧。也许您可以写入事件日志,如果是这样,您可以触发应用程序启动。
标签: c# winforms rabbitmq windows-services