我有一個線程阻塞在Networkstream Read
調用。我如何最好地放棄這個線程?我試圖從另一個線程調用Thread.Abort
,根據MSDN應該提出一個ThreadAbortException
。但是ThreadAbortException
在線程中完全不會被引發。但是,當我刪除阻止Read
調用,並只讓線程坐在一個循環。做這個的最好方式是什麼?我是否可以同時等待Read
調用和事件,以便在發生任何情況時線程解除阻塞?然後,我可以從另一個線程發出該事件的信號。中止阻塞線程
Q
中止阻塞線程
3
A
回答
2
Thread.Abort
只在線程運行託管代碼時中止,但線程正在等待非託管套接字,因此在套接字解除阻塞之前什麼也沒有發生。
關閉套接字是最好的選擇。
+0
謝謝你這是工作 – PaulK 2012-08-04 12:56:15
3
1
集
stream.ReadTimeout = timeout;
// timeout in ms
使用
stream.Read(....
之前,這將迫使讀超時,並允許沒事的時候會被讀以毫秒爲單位指定超時向做一些事情。請參閱MSDN上的Stream::ReadTimeout Property或this post。 通過這種方式,您可以實現一個只讀指定的超時時間爲的讀取。使用其他同步方法來確定讀數是應該繼續還是應該完成。超時會拋出異常。
相關問題
- 1. 阻止阻塞的線程阻塞
- 2. 阻止Tomcat中的線程阻塞
- 3. 將線程阻塞轉換爲f中的非線程阻塞#
- 4. 阻塞隊列不阻塞線程?
- 5. Python阻塞的線程終止方法?
- 6. 德爾福 - 終止阻塞的線程
- 7. 的Python:如何終止阻塞線程
- 8. MessageBeep線程阻塞
- 9. 阻塞線程 - Java
- 10. 非阻塞線程
- 11. Java線程阻塞
- 12. 在.Net中阻塞線程
- 13. 阻塞線程中斷
- 14. 在Django中阻塞網絡調用阻止所有線程?
- 15. UI線程被阻塞
- 16. Netty線程被阻塞
- 17. Spring ObjectPooling&線程阻塞
- 18. 隊列阻塞主線程
- 19. 沒有阻塞線程
- 20. ConnectAsync阻塞UI線程
- 21. Java selector.select()阻塞線程?
- 22. Multitheading阻塞工作線程
- 23. C#線程與阻塞
- 24. SmartThreadPool阻塞UI線程
- 25. MaxDegreeOfParallelism阻塞主線程?
- 26. WebClient.DownloadProgressChanged:Console.WriteLine()是阻塞UI線程
- 27. 線程阻塞問題
- 28. 線程阻塞問題?
- 29. 網狀4.0.15線程阻塞
- 30. Silverlight UI線程阻塞
你好,你是否嘗試修改緩衝區大小以避免阻塞。在線程中使用循環和緩衝區大小可以在需要時停止線程;-) – 2012-08-04 11:43:10
如何不首先阻止? – CodesInChaos 2012-08-04 11:44:02