我有一個客戶端/服務器問題,我試圖找出最佳解決方案。如果發生錯誤,IO線程警告GUI線程
如果客戶端與服務器斷開連接,出於任何原因,我想讓輸入輸出線程警告gui線程出錯,從而讓gui線程打印錯誤並正常處理它(可能會退回到登錄gui)。在初始的gui線程創建後,客戶端可以更改爲任何數量的guis,具體取決於他在做什麼,所以我想我需要一種方法來動態地查看當前正在運行的gui。
,我想這樣做,到目前爲止的方法:
1)創建,創建並顯示每個GUI對象。所以,而不是調用invokeLater ... SomeGui.CreateAndShoGui()...我們會有這個對象負責這樣做,即GuiObject.showSomeGui();
2)讓每個GUI都實現一個接口,這將確保有一種方法在被調用時會在我們失去與服務器的連接時正常關閉此GUI。
3)有一個線程監視IO線程和gui對象。如果IO線程出現問題,IO線程將關閉並通知監視線程我們已經失去連接服務器。然後,監控線程可以警告任何開放的guis(來自gui對象)我們已經失去連接並且需要關閉。
我剛開始考慮這個問題,到目前爲止,這是我提出的最佳解決方案。這似乎是一個合理的解決方案,不會給代碼增加太多的複雜性?或者任何人都可以推薦一種解決方案,讓閱讀代碼的人更容易理解?
感謝
編輯: 我與正在發生IO線程,因爲它打開也被傳遞給每一個新的圖形用戶界面上的對象玩弄另一種選擇。該對象將當前打開的guis引用返回給io線程,以便io線程可以在出現問題時提醒它。雖然我傾向於這個解決方案,因爲如果你有一個專門用來實現這個工作的對象(比如上面的解決方案),而不是將一些不明確的對象傳遞給每個gui,它似乎會更容易閱讀。
我的下一個問題是,如果每個GUI都實現了一個接口,那麼IO線程如何知道要調用closeGui方法?任何數量的不同的guis都可能會起作用,如果我沒有誤認爲IO線程必須引用當前的gui才能調用該方法?或者有什麼我在這裏失蹤? – vimalloc 2010-08-20 16:19:20
請參閱編輯回覆後的信息。 – rancidfishbreath 2010-08-20 20:06:41