2011-03-28 27 views
0

我对C#很新,所以请耐心等待。我正在开发一个由事件驱动的服务器线程和一个GUI线程组成的小型服务器应用程序。我想让GUI和服务器“独立”(不使用两个进程)。独立我的意思是,一旦GUI启动,它会检查服务器线程是否正在运行,如果不是它创建它,否则只是通知服务器线程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。

谢谢你的时间和答案。

+2

使用两个过程是最自然的解决方案,从长远来看,它会让事情变得容易得多。你为什么不想这样做? – Jon 2011-03-28 14:10:01

+0

因为我认为它会使通信和更新GUI更有问题。 – Ben 2011-03-28 14:13:25

回答

2

我永远不会想自己使用这样的服务器。把GUI和服务器逻辑合并成一个总是不好的主意。无论从设计还是用户角度来看。

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

我明白你对分裂两者的担心。但是,如果你是更好,更有经验的开发人员(也可能是管理员),那么你就会明白,将两者分开不仅是合理的,而且是真正解决问题的唯一途径。