2010-08-17 140 views
1

我有一個C#應用程序,它使用SerialPort對象在運行另一臺具有BlueTooth功能的計算機上運行的另一個應用程序副本之間建立連接。該程序不斷寫出來自主機的一些ASCII數據,然後由遠程機器接收。這個過程相當不錯(雖然不是沒有一些不想要的瑣事,但這不是這個問題的關鍵)。SerialPort意外關閉

它很好,也就是說,直到我切換表單。該應用程序有三種主要形式。當表格被切換時,舊的表格被隱藏,並顯示新的表格。用戶使用form2或form3上的[X]工具欄按鈕關閉這些表單並返回form1(不是我的設計決策。該項目基於VB6應用程序,並且我沒有太大的餘地來改變它的功能)。

當我從form1轉到form2時,serialPort突然開始報告它已關閉。但是......它繼續發送數據。也就是說,在我切換回form1之前,我得到一個InvalidOperationException告訴我,serialPort已關閉,並且不能寫入。 serialPort對象是私有的,form1是觸及它的唯一形式。

只是爲了確定這是我沒有經歷並在事故發生時關閉它,我在項目中註釋了每一個serialPort.Close();行,並且我仍然得到相同的錯誤。有東西導致端口關閉(或者報告它已關閉),我不知道是什麼。此外,我無法打開它,因爲它告訴我該端口當前正在使用。

我真的不知道BlueTooth或網絡的任何信息,所以這就是我身邊所有的結果,只有我身邊的Google比我多。也許有人在這裏知道SerialPort類的細微差別,足以知道我做錯了什麼。

感謝所有誰可以提供任何幫助。

回答

2

聽起來好像SerialPort由於表單擁有對象而在表單關閉時被銷燬。將它從表單設計器移出並應用到應用程序代碼中,您應該沒問題。