利用VC#創(chuàng)作簡(jiǎn)單的多線程組件

字號(hào):

可以編寫(xiě)能同時(shí)執(zhí)行多個(gè)任務(wù)的應(yīng)用程序。此能力(稱為“多線程處理”或“自由線程處理”)是設(shè)計(jì)處理器密集型且要求用戶輸入的組件的強(qiáng)大方法。計(jì)算工資表信息的組件就是一個(gè)可能利用多線程處理的組件示例。該組件可以在一個(gè)線程上處理用戶輸入到數(shù)據(jù)庫(kù)的數(shù)據(jù),而在另一個(gè)線程上執(zhí)行頻繁使用處理器的工資表計(jì)算。通過(guò)在不同的線程上運(yùn)行這些進(jìn)程,用戶不必等到計(jì)算機(jī)完成計(jì)算,就可以輸入其他數(shù)據(jù)。在本演練中,將創(chuàng)建一個(gè)簡(jiǎn)單的多線程組件,該組件可以同時(shí)執(zhí)行若干個(gè)復(fù)雜計(jì)算。
    創(chuàng)建項(xiàng)目
    應(yīng)用程序?qū)▎蝹€(gè)窗體和一個(gè)組件。用戶將輸入值并指示該組件開(kāi)始計(jì)算。然后,窗體將接收來(lái)自該組件的值,將其顯示在標(biāo)簽控件中。該組件將執(zhí)行頻繁使用處理器的計(jì)算,并在完成后通知窗體。您將在組件中創(chuàng)建公共變量,用以保存從用戶界面收到的值。同時(shí),您還將在組件中實(shí)現(xiàn)一些方法,根據(jù)這些變量的值執(zhí)行計(jì)算。
    注意 盡管對(duì)于計(jì)算值的方法來(lái)說(shuō),函數(shù)通常更為可取,但不能在線程之間傳遞參數(shù),也不能返回值。有很多向線程提供值和從線程接收值的簡(jiǎn)單方法。在本演示中,將通過(guò)更新公共變量將值返回到用戶界面,當(dāng)線程執(zhí)行完畢后,使用事件來(lái)通知主程序。
    創(chuàng)建窗體
    創(chuàng)建新的“Windows 應(yīng)用程序”項(xiàng)目。
    將應(yīng)用程序命名為 Calculations,并將 Form1.cs 重命名為 frmCalculations.cs。
    該窗體將用作應(yīng)用程序的主用戶界面。
    雙擊設(shè)計(jì)器上的窗體以打開(kāi)代碼編輯器。在“編輯”菜單中,選擇“查找和替換”,然后選擇“替換”。使用“全部替換”將 Form1 替換為 frmCalculations。
    在“解決方案資源管理器”中,右擊“frmCalculations.cs”并選擇“視圖設(shè)計(jì)器”。設(shè)計(jì)器打開(kāi)。
    向窗體中添加 5 個(gè) Label 控件、4 個(gè) Button 控件和 1 個(gè) TextBox 控件。
    為這些控件設(shè)置屬性,如下所示:
    控件 名稱 文本
    Label1 lblFactorial1 (空白)
    Label2 lblFactorial2 (空白)
    Label3 lblAddTwo (空白)
    Label4 lblRunLoops (空白)
    Label5 lblTotalCalculations (空白)
    Button1 btnFactorial1 Factorial
    Button2 btnFactorial2 Factorial - 1
    Button3 btnAddTwo Add Two
    Button4 btnRunLoops Run a Loop
    Textbox1 txtValue (空白)