2013-04-02 21 views
1

編程相當新,但需要此代碼來獲取我正在構建的一些硬件。backgroundworker循環從telnet讀取 - C#

我寫C#程序連接到Telnet服務器和讀取從進料,然後在文本框中顯示(聽起來很簡單)...

一個連接按鈕連接遠程登錄並運行一個BackgroundWorker是然後等待telnet會話發送數據,然後輸出到後臺工作人員完整部分的文本框。

我的問題是,一旦接收到讀取數據,我怎麼能讓後臺工作者再次運行?

如果我在封裝了backgroundworker starter的連接按鈕中使用whil循環,那麼ui會凍結(這是使用後臺工作器開始的全部要點)。

謝謝你的幫助。

粗毛

+0

編輯:我會考慮離開背景工作者,並進入任務並行庫。 –

回答

1

你不說你是如何從Telnet服務器讀取。

我不會推薦使用BackgroundWorker甚至Task這個。您可以讓您的GUI代碼創建一個TcpClient實例。一旦創建了該按鈕,按鈕處理程序將調用BeginConnect,傳遞對將在連接建立時調用的函數的引用。

當連接回調被調用時,它獲取流(調用GetStream),並在流上調用BeginRead。讀處理程序再次調用BeginRead。所以你最終得到的是一個異步循環。

參見BeginConnectEndConnect的示例,並且NetworkStreamBeginReadEndRead方法。

此外,您可能會從搜索[TcpClient異步示例]中獲得一些很好的信息。

+0

嗨,我正在使用Minimilistic Telnet庫(http://www.codeproject.com/Articles/19071/Quick-tool-A-minimalistic-Telnet-library) –