GUI + Thread,GUI退出线程停留 - > GUI再次启动时如何检测线程?

时间:2011-03-28 14:05:46

标签: c# multithreading

我是C#的新手,所以请耐心等待。我正在开发一个小型服务器应用程序,它由事件驱动的服务器线程和GUI线程组成。我想使GUI和服务器“独立”(不使用两个进程)。通过独立我的意思是一旦GUI启动它检查服务器线程是否正在运行,如果它不是它创建它,否则只是通知服务器线程GUI线程是活动的。并且该GUI线程可以退出并使服务器线程保持活动状态。

伪代码:

GUI starts
{
if (serverThread.isRunning)
  notify serverThread that GUI is active
else
   create and start serverThread
}

GUI exits
{ notify serverThread that GUI is going to be terminated; exit GUI }

棘手的部分是如何重新启动GUI并通知服务器GUI处于活动状态。

现在我所做的就是:启动GUI并在GUI内部创建线程serverThread并启动它。离开GUI后服务器线程保持活动状态,但我不知道再次启动GUI时如何获取对serverThread的引用。

通过单击图标启动GUI。

感谢您的时间和答案。

1 个答案:

答案 0 :(得分:2)

我永远不想自己使用这样的服务器。将GUI和服务器逻辑合二为一,总是坏主意。从设计和用户角度来看。

在你的情况下,我建议创建两个单独的可执行文件。首先是服务器和第二个GUI。服务器可能是Windows服务。对于两者之间的沟通,WCF将是完美的。它允许您在每一侧无缝地创建通信通道,而无需任何开发人员开销。

我理解你担心将两者分开。但如果你是更好,更有经验的开发人员(可能还有管理员),那么你就会明白,将两者分开不仅是合乎逻辑的,而且只是实际解决问题的方法。