2010-09-30 111 views
14

我希望能夠很好地理解C#中的多線程。我讀過一些文章,如Joseph Albahari's tutorials,這些文章解釋了這些概念,但正如你所知道的那樣,無論你讀了多少,如果你不練習,大部分都會變成垃圾。我需要一些具有指導性和實用性的與現實生活實踐相關的代碼示例,而不是一些打印某些行的示例。你有什麼建議嗎?練習建議,以幫助學習C#中的多線程#

回答

4

夥計傢伙我想我找到了一個很好的網站:planet-source-code.com。在「線程」關鍵字的.Net代碼搜索似乎返回一些很好的例子,像

  • 多線程文件夾同步
  • 多線程TCP服務器
  • 背景文件下載
  • 異步。插座
  • P2P文件共享
  • 簡單的POP3控制檯郵件檢查器和其他許多人!

yay!

+0

我認爲你應該修復這個鏈接:刪除「.com」後的破折號。 – AlexSavAlexandrov 2012-12-14 21:44:08

+0

好吧,這樣做。謝謝哥們。 – aslisabanci 2012-12-15 15:48:26

2

如果你正在做任何winforms或wpf開發,當你試圖在UI線程中做「東西」時,你會很快遇到問題。

假設您需要讀取和解析大型(2GB)XML文件的內容。如果工作是在UI線程中執行的,則界面將掛起直到工作完成。相反,如果您要在工作線程中正確執行工作,那麼您可以通過消息傳遞讓UI保持響應,並讓用戶知道您當前正在做什麼(狀態欄(唉))或以文本形式顯示您的內容做「閱讀XML」等)

一個很好的簡單例子就是製作一個示例應用程序,讓它觸發一個BackgroundWorker來處理背景中的一些任意工作(它甚至可能是Thread.Sleep(10000 ),或者像那樣的小事。)

我想說這是關於這個問題的許多好的起點之一。

http://msdn.microsoft.com/en-us/library/cc221403%28VS.95%29.aspx

+0

我主要在後臺通信領域,使用套接字和Web服務。但感謝您的建議,我會從它開始:) – aslisabanci 2010-09-30 19:39:38

2

site有,我覺得這是不錯的實踐應用程序實現一些簡單的應用程序。但是,似乎鏈接到源代碼被破壞。儘管如此,我認爲這些應用程序代表了非常實用的例子。一些包括:

  • 桌面搜索
  • 下載管理器
  • FTP客戶端
  • 文件壓縮
  • 多個RSS
+0

是啊,這是我一直在尋找。太糟糕了消息來源:( – aslisabanci 2010-09-30 20:38:18

3

某種類型的隨機數字運算的是一個很好的測試爲了這。我通過編寫一個主要的數字查找器來教授自己的線程,然後將我的「搜索」數字分成塊並使用線程來處理每個數據塊。

這讓我設置塊大小,使用的線程數量,發射線程之間的等待時間等一些變量來測試這些如何影響性能。