2014-01-25 73 views
0

我正在爲Windows CE設備編寫.NET Compact Framework應用程序。我的應用程序使用XML序列化數據包與臺式計算機進行通信。c#Compact Framework檢測連接已關閉

我遇到的是,如果網線已經拔掉,我的stream.Read操作會無限期地阻塞。設置超時在我的CF中不受支持。

我正在尋找關於如何處理此問題的「最佳實踐」答案。如果因任何原因連接關閉,我的循環應停止並開始嘗試重新連接。

我找到了this answer,但它沒有包含我需要的「使用」指令,而且我也不確定發生了什麼。

所有的提示都被讚賞,特別是如果他們解決了問題。謝謝!

+0

您沒有包含任何類型的代碼示例...您使用的是什麼流類?直接使用Socket類可能會有更好的運氣。 – tcarvin

回答

0

由於stream.Read是一個阻塞調用,因此應該將代碼移動到單獨的線程中,這是針對所有阻塞函數的建議。您可以使用linked code停止該線程。例如首先使用Thread.Join,然後使用Thread.Abort()。將代碼放在try/catch塊內的線程內,並捕獲ThreadAbortException來知道線程何時中止。

當您開始編寫線程代碼時,您必須找到一種方法來與代碼的其餘部分進行同步。這通常使用委託和事件處理程序完成。但是如果你之前沒有這樣做,這是一個不同的任務,值得進行一些研究。