none
在vb.net 2010中,Threading與BackGroundWorker 是一樣的東西嗎? RRS feed

  • 問題

  • 我有兩個問題

    第一個:在vb.net 2010中,Threading與BackGroundWor 是一樣的東西嗎?(一樣意思?)

    第二個:我想"同時"執行4個副程式該怎麼寫?,多執行緒該怎麼利用?

    以上使用 vb.2010 找了很多資料 有點複雜,不知是否有簡單易懂的,我目的在於,我想"同時"執行4個副程式,而不是1.2.3.4 依序執行的。
    • 抱歉 補充一下:

      問題三:

      Threading好像是命名空間
      Dim MyThreading As New System.Threading.Thread(AddressOf 副程式名稱)

      BackGroundWor 好像是元件

      以上是我找資料所得的了解 不知是否正確??


    0.0
    2010年10月18日 下午 12:16

解答

  • 我講的那個範例,裡面很清楚舉例三種執行方式,其中兩種是你要的。

    Thread 是獨立的。

    BackgroundWorker 只是另一種委派,宣告一個就只有多一個執行緒。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 .NET愛好者 2010年10月20日 下午 07:04
    2010年10月20日 下午 03:34

所有回覆

  • 1. 他們很類似,會產生新的執行緒, 但不能說完全一樣.

    2. 只能說近乎同時, 你產生四個不同的Thread類別的Instance去跑就行了. 如果要 "更平行", 參考一下祭司寫的這個 http://blog.sina.com.tw/dotnet/article.php?pbgid=4907&entryid=583236&comopen=1

    3. BackgroundWorker也是個類別, 只是因為他有繼承 system.componentmodel.component , 所以通常會稱呼它也是個元件.

    4. 如果想對程式語言的基礎有更清楚的認, 建議你看MSDN文件庫的 [Visual Studio 2010 程式設計概念 ] 整個章節 (包含附在此章的相關文件)

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年10月18日 下午 01:07
    版主
  • dear Bill:

    請問如果我要多執行緒的話

    哪一種比較好呢

    Threading??

    BackGroundWorker ??


    0.0
    2010年10月18日 下午 02:27
  • http://msdn.microsoft.com/zh-tw/library/tak05yx0.aspx

    MSDN上說:BackgroundWorker 元件會取代並加入功能至 System.Threading 命名空間;不過,您可以依選擇為回溯相容性 (Backward Compatibility) 和未來使用而保留 System.Threading 命名空間。

    這點我有點不懂....


    0.0
    2010年10月18日 下午 02:35
  • http://msdn.microsoft.com/zh-tw/library/tak05yx0.aspx

    MSDN上說: BackgroundWorker 元件會取代並加入功能至 System.Threading 命名空間;不過,您可以依選擇為回溯相容性 (Backward Compatibility) 和未來使用而保留 System.Threading 命名空間。

    這點我有點不懂....


    0.0


    1. 如果要白話解釋就是.Net 先有了 System.Threading命名空間中的那一堆類別, 然後才有 BackgroundWorker (應該是在2.0版出現的), 它把一些寫多緒程式複雜的東西包了起來.

    然後隨你愛用BackgroundWorker 還是 System.Threading中的類別.

    2. 一般這樣考量

    (1) 如果是個很簡單的多緒, 也沒有其它考慮因素, 用BackgroundWorker比較方便簡單

    (2) 動作很複雜的多緒程式, ex: 執行緒又會再產生執行緒之類的, 使用Threading寫對資源的消耗比較小

    (3) 如果你要使用 Thread, 務必把跨執行緒委派弄清楚.

     

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年10月18日 下午 02:50
    版主
  • 把 VB2010 內建的 VB Samples 解壓縮後,看:

    \Application Samples\Multithread

    這個範例。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年10月18日 下午 03:20
  • 如果想"同時"執行4個副程式, 而且工具是VS2010的話可以考慮用Parallel Task, 請參考:Parallel Tasks in .NET 4.0
    2010年10月19日 上午 01:05
  • 我還是有點搞不懂兩著的關係...

    目前卡在我想同時執行4個副程式

    因為依序執行會讓程式等太久....


    0.0
    2010年10月19日 下午 06:23
  • 試著用這兩種方式去寫程式, 多試幾次, 久了你就可以體會它們有什麼不同了

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年10月19日 下午 06:27
    版主
  • 這樣講好了, Threading和BackgroundWorker, Parallel都發源於執行緒, 只是BackgroundWorker, Parallel有包裝, 比較容易使用
    2010年10月20日 上午 09:21
  • 我講的那個範例,裡面很清楚舉例三種執行方式,其中兩種是你要的。

    Thread 是獨立的。

    BackgroundWorker 只是另一種委派,宣告一個就只有多一個執行緒。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 .NET愛好者 2010年10月20日 下午 07:04
    2010年10月20日 下午 03:34