Monday, January 5, 2009

C# WinForm Socket

C# WinForm要使用Socket要注意的事還不少!因為若Socket要和WinForm是同時運行的,就必須使用到Thread,而使用到Thread就必須要小心結束WinForm的時候。Socket Thread是不是也一起結束了,如果沒有一起結束,就會留著一個孤兒程序在系統中,這樣會引起不必要的麻煩。若之後又要使用到Socket資源,很可能就會造成問題。所以在使用Socket Thread的時候,必須要小心

而我在建立Socket Thread的時候就先將Socket Thread設為Background執行,而將Thread設為Background跟Foreground有什麼不同呢?

根據MSDN所寫:
執行緒不是背景執行緒就是前景執行緒。背景執行緒和前景執行緒相同,唯一差別在於背景執行緒不會防止處理序終止。一旦終止屬於處理序的所有前景執行緒之後,Common Language Runtime 就會結束處理序。剩下的所有背景執行緒則會在尚未完成之前全部停止。


所以當我們結束WinForm的時候 Socket Thread也會跟著停止

Reference:
MSDN

No comments:

Post a Comment