从 Windows 服务打开对话框窗口

Open a dialog window from a windows service

提问人:user2147570 提问时间:4/29/2013 更新时间:10/16/2013 访问量:8917

问:

我在 C# 中创建了一个 Windows 服务应用程序,以特定时间间隔弹出一个对话框窗口。在 Visual Studio 中调试时,它运行良好。然后我创建了一个安装设置。但是安装后,服务不会弹出对话框窗口。 原因是什么,我该如何解决?

C# .NET Windows 服务

评论

0赞 Maarten 4/29/2013
你不应该这样做,见 stackoverflow.com/a/12956489/261050。有关解决方法,请参阅该问题的其他答案。
0赞 Dennis 4/29/2013
从窗口服务中显示 Windows 窗体的可能副本
0赞 RajeshKdev 4/29/2013
如果我遇到这个问题,我会这样做。将异常放入 File。瞧,:)Try Catchlog
0赞 David Heffernan 4/29/2013
@RJK记录的异常不会讨论会话 0 隔离和该会话的非交互性质

答:

3赞 David Heffernan 4/29/2013 #1

服务在与交互式桌面隔离的会话 0 中运行。不能显示服务中的 UI。您需要运行单独的桌面进程来显示 UI,然后使用 IPC 在服务和桌面进程之间进行通信。

如果您的对话框足够简单,则可以使用 WTSSendMessage

如果要定期运行代码,那么最好使用计划任务而不是服务。

1赞 Driftware 4/29/2013 #2

您的服务是如何安装的?您使用的是哪个 Windows 版本?

如果 vista/7 是否显示交互式服务检测?

底线是 Windows 服务,其中从未为用户交互而设计。

但是,有一种方法,但我建议使用不同的方式与用户交互

将 Windows 服务设置为与桌面交互可能会带来安全问题。

我发布了这个链接 希望对您有所帮助

http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/1c3d4b96-c58b-465a-a964-89926bd455f1/