1

我必須實現與服務器的異步套接字連接來更新文本(如聊天)並在我的應用程序的屏幕中顯示此文本。WP7 - 套接字架構 - 如何管理套接字連接?主題?

我看過一些關於如何實現這種套接字的例子,這不是一件困難的事情......但我正在尋找改進我的程序。

我在想,也許我需要在後臺管理連接,我不知道我該如何實現這個任務......這是一個好主意嗎?管理一個線程中的用戶界面和其他連接

如果有人能讓我關注這類任務嗎?

謝謝。

回答

2

由於傳統的套接字I/O處於阻塞狀態,因此一定需要將I/O代碼移動到其他線程中,否則您的UI線程將被阻塞,無法接收用戶輸入。

好的,所以你需要另一個線程。現在出現的問題是,如果某些輸入來自套接字,則此線程無法自行更新UI,因爲只有UI線程才能完成此操作。爲此,您需要調用Dispatcher.BeginInvoke將更新轉發到UI線程。

+0

感謝您的信息,但您能否建議我可以使用哪種線程來執行此任務?我一直在聽一些關於週期性任務和資源密集型任務的東西......我認爲這種操作對於達到我的目標是沒有意義的......另一方面,我一直在閱讀有關執行任務差異的3種方法在後臺:System.Threading.Thread,System.ComponentModel.BackgroundWorker和System.Threading.ThreadPool.QueueUserWorkItem()...你可以給任何參考關於哪個最好的方式來管理套接字在後臺?感謝 – 2012-03-15 10:27:16

+0

@Juan Pedro:對於無限期地從套接字讀取,我會使用'System.Threading.Thread'。線程池不適用於長時間運行的I/O,'BackgroundWorker'通常用於執行耗時的操作,如數據庫操作或下載,並且可以報告進度,但通常不用於無限期地等待套接字。 – Tudor 2012-03-15 10:47:03

+0

謝謝你的回答...讓我等一天再把這個帖子設置爲已解決。我會等待聽到其他用戶的意見。不管怎樣,謝謝你。 – 2012-03-15 11:13:12