2011-03-28 26 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將是完美的。它使您可以在每一方無縫創建通信通道,而無需任何開發人員開銷。

我明白你對分裂兩者的擔心。但是,如果你是更好,更有經驗的開發人員(也可能是管理員),那麼你就會明白,將兩者分開不僅是合理的,而且是真正解決問題的唯一途徑。