在我的C#應用程序中,我有一個線程,基本上不斷從TcpClient中讀取,直到告訴停止。我用WaitHandles爲了這個目的,例如:TcpClient - 等待數據可用
private ManualResetEvent stopping; private void Receive() { while (!this.stopping.WaitOne(10)) { while (this.client.Available > 0) { // Read and process data } } }
正如你所看到的,我等着被告知線程停止。如果沒有,它會從TcpClient中讀取所有數據並循環。
我的問題是10ms的延遲,我寧願沒有。我可以減少它,但我更喜歡一個解決方案,在該解決方案中,程序將暫停,直到線程被告知停止或更多數據可用。
實際上,我要的是一個WaitHandle的,告訴我,當數據可用上的TcpClient。這樣,我可以使用WaitHandle.WaitAny。有什麼辦法可以做到這一點,或有人可以建議一種替代方法嗎?
這不可能是一個bodge因爲它需要一個相當高性能 - 和 - 輕量級後臺進程。