2010-03-27 32 views
0

我已經編寫了一個多線程服務器,它使用tcplistener和一個控制輸入和輸出的客戶端處理程序類。我也有一個GUI聊天客戶端。聊天客戶端工作正常,服務器的控制檯版本也能正常工作。c#GUI從另一個類更改列表框

我在部分(?)Form類中有一個start()方法,當我單擊按鈕時,它從一個新線程運行,啓動TCP Listener並循環並接受套接字請求。對於每個請求,都會創建一個新的ClientHandler對象,並且在用於新處理程序線程之前將套接字傳遞給此對象。

ClientHandler是一個與表單不同的類,我在將ClientHandler類中的數據寫入Form類的Listbox時遇到了實際問題。我已經嘗試了幾種不同的方法來完成這個任務,但它們都沒有工作,因爲它們涉及在ClientHandler中創建一個新的表單類。

任何幫助或建議,我應該閱讀幫助我會非常感激。

+0

關於您的問號部分:表單是部分的,以便您的用戶代碼和設計器代碼可以存儲在不同的文件中。這使得開發人員不太可能修改設計器代碼並弄亂設計器,並且使用戶代碼文件變得更簡單。 – 2010-03-27 11:55:15

+0

這很有道理。謝謝。 – SlowForce 2010-03-27 11:57:00

回答

0

OK問題就迎刃而解了:

我通過ServerGUI到ClientHandler的階級是這樣的:

ClientHandler handler = new ClientHandler(clientSocket, "Client " + id.ToString(),this); 

,然後我可以做我想做的事情。幾乎沒有花了我2個小時!

+1

您可能要考慮的一件事是您描述的設計是讓您的ClientHandler負責更新GUI。如果要更改設計,以便ClientHandler提供事件通知更改並且GUI消耗事件,那麼您將可以靈活地在將來更改GUI而不影響ClientHandler代碼。 – 2010-03-27 13:13:15

相關問題