




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材第1頁電子科大成都學院計算機系電子科大成都學院計算機系課件制作:羅福強、楊劍課件制作:羅福強、楊劍E-Mail:LFQ501SOHU.COm2022-3-232012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四
2、川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第2頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材1. 總體要求總體要求v 了解進程及線程的概念。了解進程及線程的概念。v 掌握使用掌握使用C#進行多線程的創(chuàng)建及簡單控制。進行多線程的創(chuàng)建及簡單控制。v 掌握線程的同步策略。掌握線程的同步策略。v 了解線程池技術(shù)。了解線程池技術(shù)。v 掌握異步編程的設(shè)計與實現(xiàn)技術(shù)掌握異步編程的設(shè)計與實現(xiàn)技術(shù)2. 學習重點學習重點v 線程的啟動、管理和終止線程的啟動、管理和終止v 線程安全的實現(xiàn)線程安全的實現(xiàn)v 異步編程的實現(xiàn)方法。異步編程的實現(xiàn)方法。2012年年2月月29日日10時時35分分Visual C#
3、.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第3頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材線程創(chuàng)建與控制線程創(chuàng)建與控制多線程的同步多線程的同步多線程的概念多線程的概念9.4線程池線程池異步編程異步編程9.59.52012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第4頁人
4、民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材線程和進程線程和進程v9.1.2 線程的生命周期和狀態(tài)線程的生命周期和狀態(tài)v9.1.3 線程的優(yōu)先級線程的優(yōu)先級2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第5頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v進程是一個正在運行的應(yīng)用程序進程是一個正在運行的應(yīng)用程序,擁有獨立的擁有獨立的資源,進程之間相互隔離,互不干擾資源,進程之間相互隔離,互不干擾。v線程是操作系統(tǒng)
5、分配處理器時間的基本單元。線程是操作系統(tǒng)分配處理器時間的基本單元。一個進程可以包含一個或多個線程。線程共享一個進程可以包含一個或多個線程。線程共享其所屬進程所擁有的資源其所屬進程所擁有的資源。v線程處理通常分為兩大類:線程處理通常分為兩大類:v(1)單線程處理單線程處理:指一個進程中只能有一個線程指一個進程中只能有一個線程v(2)多線程處理多線程處理:指將一個進程劃分為多個線程指將一個進程劃分為多個線程,可可最大限度地利用處理器和用戶的時間,提最大限度地利用處理器和用戶的時間,提高系統(tǒng)的效率。高系統(tǒng)的效率。2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序
6、設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第6頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v從線程被創(chuàng)建到被終止稱為線程的生命周期從線程被創(chuàng)建到被終止稱為線程的生命周期。2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第7頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材優(yōu)先級屬性最高Highest具有該優(yōu)先級的線程會最先被考
7、慮調(diào)度執(zhí)行較高Above Normal具有該優(yōu)先級的線程會在最高優(yōu)先級的線程之后、正常優(yōu)先級的線程之前被考慮調(diào)度執(zhí)行正常Normal具有該優(yōu)先級的線程會在較高優(yōu)先級的線程之后、較低優(yōu)先級的線程之前被考慮調(diào)度執(zhí)行較低Below Normal具有該優(yōu)先級的線程會在正常優(yōu)先級的線程之后、最低優(yōu)先級的線程之前被考慮調(diào)度執(zhí)行最低Lowest具有該優(yōu)先級的線程會最后被考慮調(diào)度執(zhí)行2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第8頁人民郵
8、電出版社與電子科技大學成都學院聯(lián)合打造精品教材v9.2.1創(chuàng)建和啟動線程創(chuàng)建和啟動線程v9.2.2 控制線程控制線程2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第9頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v 在在.NET中,用戶只需要利用中,用戶只需要利用System.Threading提提供的大量線程編程類和接口來處理線程即可。供的大量線程編程類和接口來處理線程即可。其其中中,Thread類提供創(chuàng)建并控制線
9、程、設(shè)置線程優(yōu)先級并獲類提供創(chuàng)建并控制線程、設(shè)置線程優(yōu)先級并獲取運行狀態(tài)等功能取運行狀態(tài)等功能。v Thread類的常用屬性包括:類的常用屬性包括:uCurrentThread:獲取當前正在運行的線程uIsAlive:獲取當前線程的執(zhí)行狀態(tài)。如果此線程已啟動并且尚未正常終止或中止,則為 true;否則為 false。uName:獲取或設(shè)置線程的名稱(默認為null)。uPriority:獲取或設(shè)置線程的調(diào)度優(yōu)先級(默認為ThreadPriority.Normal)uThreadState:獲取當前線程的狀態(tài)。2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程
10、序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第10頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v創(chuàng)建線程時,首先創(chuàng)建一個創(chuàng)建線程時,首先創(chuàng)建一個Thread類的對象類的對象,其其構(gòu)造函數(shù)的參數(shù)是一個構(gòu)造函數(shù)的參數(shù)是一個ThreadStart委托委托,該委托用來引用一個被托管了的作為新的線,該委托用來引用一個被托管了的作為新的線程執(zhí)行的方法。然后,調(diào)用程執(zhí)行的方法。然后,調(diào)用Thread對象的對象的Start()方法啟動并執(zhí)行新的線程。方法啟動并執(zhí)行新的線程。v操作演示:實例操作演示:實例9-1v詳
11、細代碼:見教材詳細代碼:見教材v執(zhí)行效果:執(zhí)行效果:2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第11頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v 1暫停和恢復(fù)線程暫停和恢復(fù)線程v (1) 使用使用Thread.Sleepu立即將當前線程阻塞若干ms,進入WaitSleepJoin狀態(tài)。調(diào)用Thread.Interrupt可提前恢復(fù)。v (2) 使用使用Thread.Suspendu將當前線程阻塞,但可調(diào)用Th
12、read.Resume恢復(fù)。注意:與Sleep不同的是,Supspend不會使線程立即停止執(zhí)行,一切由CLR安排;如果線程尚未啟動或已經(jīng)停止,則不能將其掛起。v (3) 使用使用Thread.Joinu強制一個線程等待另一個線程而停止。2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第12頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v2中斷和中止線程中斷和中止線程v(1) 使用使用Thread.Interruptu調(diào)
13、用方法可中斷處于休眠的線程,將其重新放回調(diào)度隊列中,可引發(fā)ThreadInterruptedException異常。v(2) 使用使用Thread.Abortu調(diào)用該方法可永久地終止一個線程,可引發(fā)ThreadAbortException異常。u操作演示: 【實例9-2】u詳細代碼:見教材u運行效果:2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第13頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v9.3.1線程安全
14、線程安全v9.3.2 線程同步策略線程同步策略2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第14頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v線程安全是指在多個線程并發(fā)使用某個對象時線程安全是指在多個線程并發(fā)使用某個對象時,該對象成員總是保持有效狀態(tài)。,該對象成員總是保持有效狀態(tài)。v1爭用條件爭用條件u兩個或多個線程同時訪問同一數(shù)據(jù)或資源時會導(dǎo)致不符合要求或無法預(yù)期的結(jié)果。v例如,有兩個線程例如,有兩個線程A和和
15、B,A線程要設(shè)置全局變線程要設(shè)置全局變量量X的值,的值,B線程要讀取線程要讀取X的值。假設(shè)線程的值。假設(shè)線程A完完成了任務(wù),設(shè)置了成了任務(wù),設(shè)置了X的值,線程的值,線程B才讀取才讀取X。這。這是一種合理并符合要求的情況。但如果是一種合理并符合要求的情況。但如果A還未完還未完成賦值,成賦值,B就開始讀取,這時就會產(chǎn)生就開始讀取,這時就會產(chǎn)生A、B兩兩個線程同時爭奪變量個線程同時爭奪變量X的現(xiàn)象,最終導(dǎo)致的現(xiàn)象,最終導(dǎo)致B讀取讀取一個錯誤的值。這就是爭用條件一個錯誤的值。這就是爭用條件2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川
16、省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第15頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v2死鎖死鎖u如果多個線程彼此等待對方釋放其所占用的資源,則也會遇到線程安全問題。這種對線程執(zhí)行的阻塞稱為死鎖。v例如,線程例如,線程A為從賬戶為從賬戶1向賬戶向賬戶2轉(zhuǎn)賬,先獲取轉(zhuǎn)賬,先獲取賬戶賬戶1的鎖,然后準備獲取賬戶的鎖,然后準備獲取賬戶2的鎖,而此時的鎖,而此時,線程,線程B為從賬戶為從賬戶2向賬戶向賬戶1轉(zhuǎn)賬,先獲取賬戶轉(zhuǎn)賬,先獲取賬戶2的鎖,然后準備獲取賬戶的鎖,然后準備獲取賬戶1的鎖,在這種情況的鎖,在這種情況下,兩
17、個線程都因在等待對方已獲取的鎖而阻下,兩個線程都因在等待對方已獲取的鎖而阻塞,并且由于兩個線程都被阻塞,所以沒有一塞,并且由于兩個線程都被阻塞,所以沒有一個線程會釋放另一個線程繼續(xù)執(zhí)行所需的鎖,個線程會釋放另一個線程繼續(xù)執(zhí)行所需的鎖,形成死鎖。形成死鎖。2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第16頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v 為了防止因為共享資源而使線程無法正確執(zhí)行,為了防止因為共享資源而
18、使線程無法正確執(zhí)行,可通過可通過線程線程同步策略來實現(xiàn)線程安全同步策略來實現(xiàn)線程安全。v 1同步上下文同步上下文u上下文是一組有序的屬性或規(guī)則,同步上下文策略就是直接使用.NET的SynchronizationAttribute類的構(gòu)造函數(shù)對駐留在上下文中、符合上下文規(guī)則的對象啟用簡單的自動同步,確保同一時刻只有一個線程可以訪問該對象。u可以使用SynchronizationAttribute屬性為當前上下文和所有共享同一實例的上下文強行創(chuàng)建一個同步域,保證在上下文中只能有一個線程執(zhí)行。v 操作演示:實例操作演示:實例9-3v 詳細代碼:見教材詳細代碼:見教材2012年年2月月29日日10時時
19、35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第17頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v 2同步代碼區(qū)同步代碼區(qū)v 該策略是只對特定的代碼區(qū)域進行同步操作。這些特定的代該策略是只對特定的代碼區(qū)域進行同步操作。這些特定的代碼區(qū)一般多為方法中重要的代碼段。除了可以同步實例方法碼區(qū)一般多為方法中重要的代碼段。除了可以同步實例方法外,該策略還可以對靜態(tài)方法實施同步。外,該策略還可以對靜態(tài)方法實施同步。v (1) Monitor類類:u其思想是首先
20、用其Enter()方法獲得一個鎖,然后用其Exit()方法釋放該鎖。一個線程一旦獲得重要代碼區(qū)的鎖,其他線程就要等到該鎖被釋放后才能使用該代碼區(qū)。v (2) C#中的中的Lock關(guān)鍵字關(guān)鍵字uC#中使用Lock關(guān)鍵字同樣可以獲得一個Monitor鎖。只需要簡單地用Lock語句將需要同步的代碼括起來,括號表示受保護代碼的起始點和終止點。v 操作演示:實例操作演示:實例9-4v 詳細代碼:見教材詳細代碼:見教材2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工
21、程建設(shè)項目Email:LFQ第18頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v (1) Interlocked類類:v 用于同步多個線程對共享變量的訪問,可創(chuàng)建較高級別的用于同步多個線程對共享變量的訪問,可創(chuàng)建較高級別的同步機制。同步機制。其其成員方法成員方法包括包括CompareExchange、Decrement、 Exchange和和Increment等。等。v (2) Mutex類類v 提供了跨進程或線程的同步。類似于提供了跨進程或線程的同步。類似于Monitor類。它只向類。它只向一個線程授予對共享資源的獨占訪問權(quán)。如果一個線程獲一個線程授予對共享資源的獨占訪問權(quán)。如果一
22、個線程獲取了取了Mutex對象,其他想要獲取該對象,其他想要獲取該對象對象的線程就會被掛起的線程就會被掛起,直到第一個線程釋放該,直到第一個線程釋放該Mutex對象。對象。v (3) ReaderWriterLock類類v 提供單個進程寫和多個進程讀的控制機制。當請求寫線程提供單個進程寫和多個進程讀的控制機制。當請求寫線程鎖后,在寫線程取得訪問權(quán)之前,不會接受任何新的讀線鎖后,在寫線程取得訪問權(quán)之前,不會接受任何新的讀線程,從而實現(xiàn)多個線程在任何時刻執(zhí)行讀方法,或允許單程,從而實現(xiàn)多個線程在任何時刻執(zhí)行讀方法,或允許單個線程在任何時刻執(zhí)行寫方法。個線程在任何時刻執(zhí)行寫方法。2012年年2月月2
23、9日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第19頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v【實例【實例9-5】使用】使用ReaderWriterLock,模擬,模擬對某一資源的單寫多讀對某一資源的單寫多讀。v詳細代碼:詳細代碼:u見教材2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建
24、設(shè)項目Email:LFQ第20頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v9.4.1 線程池管理線程池管理v9.4.2 ThreadPool類類2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第21頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v 線程池管理是指在多線程應(yīng)用程序的初始化過程中創(chuàng)建線線程池管理是指在多線程應(yīng)用程序的初始化過程中創(chuàng)建線程的集合。線程池中的每個線程都分派了一個任務(wù),當完程的集合。線
25、程池中的每個線程都分派了一個任務(wù),當完成任務(wù)時,該線程就返回線程池中等待下一次分派。成任務(wù)時,該線程就返回線程池中等待下一次分派。v (1) 普通線程管理普通線程管理v 服務(wù)器先創(chuàng)建服務(wù)器先創(chuàng)建10個新線程來響應(yīng)客戶請求,然后在整個生個新線程來響應(yīng)客戶請求,然后在整個生存期內(nèi)管理它們。在某個運行時刻,系統(tǒng)可能會耗盡所有存期內(nèi)管理它們。在某個運行時刻,系統(tǒng)可能會耗盡所有資源。資源。v (2) 線程池管理線程池管理v 服務(wù)器首先在線程池中創(chuàng)建服務(wù)器首先在線程池中創(chuàng)建1個新線程用于等待,每當客個新線程用于等待,每當客戶發(fā)出請求時,服務(wù)器直接將線程池中等待的線程分派給戶發(fā)出請求時,服務(wù)器直接將線程池中
26、等待的線程分派給該客戶,而無需為再創(chuàng)建線程而耗費時間。同時,服務(wù)器該客戶,而無需為再創(chuàng)建線程而耗費時間。同時,服務(wù)器還可管理線程池中的線程數(shù),如果太忙,還可以拒絕客戶還可管理線程池中的線程數(shù),如果太忙,還可以拒絕客戶請求。請求。2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第22頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材vThreadPool類,用于創(chuàng)建和使用線程池。創(chuàng)類,用于創(chuàng)建和使用線程池。創(chuàng)建和使用線程池的
27、方法是:調(diào)用建和使用線程池的方法是:調(diào)用ThreadPool類的類的QueueUserWorkItem方法,并傳遞一方法,并傳遞一個個WaitCallback的委托,在其中封裝要添加的委托,在其中封裝要添加到隊列中的方法到隊列中的方法。v操作演示:操作演示: 【實例【實例9-6】v詳細代碼:見教材詳細代碼:見教材v運行效果:運行效果:2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第23頁人民郵電出版社與電子科技大學成都學院聯(lián)
28、合打造精品教材v9.5.1 異步編程和多線程異步編程和多線程v9.5.2 異步編程模式異步編程模式2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第24頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v 傳統(tǒng)程序在調(diào)用一個方法時,需要等待傳統(tǒng)程序在調(diào)用一個方法時,需要等待該方法該方法執(zhí)行完成并返執(zhí)行完成并返回再繼續(xù)執(zhí)行后回再繼續(xù)執(zhí)行后續(xù)續(xù)的語句,但如果的語句,但如果被被調(diào)用的方法需要執(zhí)行較調(diào)用的方法需要執(zhí)行較長的時間,程
29、序?qū)㈤L時間的等待。如果希望在該方法沒有執(zhí)長的時間,程序?qū)㈤L時間的等待。如果希望在該方法沒有執(zhí)行完成行完成就就繼續(xù)執(zhí)行其它代碼。這就需要異步編程。異步編程繼續(xù)執(zhí)行其它代碼。這就需要異步編程。異步編程的基本思想是:向其它組件發(fā)出方法調(diào)用,并繼續(xù)執(zhí)行其它的基本思想是:向其它組件發(fā)出方法調(diào)用,并繼續(xù)執(zhí)行其它任務(wù),而不用等待調(diào)用的操作完成。任務(wù),而不用等待調(diào)用的操作完成。v 與與多線程編程多線程編程不同的是不同的是,異步編程異步編程不需要創(chuàng)建不需要創(chuàng)建和管理和管理線程,線程,只需在主線程中發(fā)出一個異步調(diào)用,而不需要等待異步調(diào)用只需在主線程中發(fā)出一個異步調(diào)用,而不需要等待異步調(diào)用返回即可繼續(xù)執(zhí)行其它操作。
30、如果需要返回異步調(diào)用結(jié)果,返回即可繼續(xù)執(zhí)行其它操作。如果需要返回異步調(diào)用結(jié)果,則通過回調(diào)、輪詢等方式來獲得。則通過回調(diào)、輪詢等方式來獲得。v 因為異步調(diào)用由主線程發(fā)起,且獨立于主線程之外單獨執(zhí)行因為異步調(diào)用由主線程發(fā)起,且獨立于主線程之外單獨執(zhí)行,不但達到了多線程的效果,而且還避免了多線程的同步問,不但達到了多線程的效果,而且還避免了多線程的同步問題。因此,使用異步編程來執(zhí)行多個任務(wù)要更簡便些。題。因此,使用異步編程來執(zhí)行多個任務(wù)要更簡便些。2012年年2月月29日日10時時35分分Visual C#.NET程序設(shè)計教程(第程序設(shè)計教程(第2版)版)四川省精品課程四川省精品課程、四川省高等教育質(zhì)量工程建設(shè)項目四川省高等教育質(zhì)量工程建設(shè)項目Email:LFQ第25頁人民郵電出版社與電子科技大學成都學院聯(lián)合打造精品教材v 異步編程一般分有兩個邏輯部份:客戶端調(diào)用開始方法并異步編程一般分有兩個邏輯部份:客戶端調(diào)用開始方法并提供參數(shù),從而啟動異步操作;客戶端通過調(diào)用結(jié)束方法提供參數(shù),從而啟動異步操作;客戶端通過調(diào)用結(jié)束方法,來獲取異步操作的結(jié)果,來獲取異步操作的結(jié)果。v 1開始異步操作開始異步操作:此時,可通過:此
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電動機在手持電動工具中的應(yīng)用考核試卷
- 批發(fā)商如何拓展家用視聽設(shè)備市場考核試卷
- 南通師范高等專科學校《英語小說閱讀》2023-2024學年第二學期期末試卷
- 梧州學院《現(xiàn)代食品高新技術(shù)進展》2023-2024學年第一學期期末試卷
- 天津城建大學《太陽能熱利用技術(shù)》2023-2024學年第二學期期末試卷
- 山西醫(yī)科大學《藥物統(tǒng)計學》2023-2024學年第二學期期末試卷
- 伊春市美溪區(qū)2024-2025學年四下數(shù)學期末聯(lián)考試題含解析
- 江蘇省泰州市2025屆三年級數(shù)學第二學期期末調(diào)研模擬試題含解析
- 天津市河東區(qū)天鐵一中學2024-2025學年初三下學期七調(diào)考試物理試題含解析
- 山東省青島六校聯(lián)考2025年初三下期第三次月考生物試題含解析
- 景區(qū)物業(yè)服務(wù)投標方案(技術(shù)標)
- 《新能源乘用車二手車鑒定評估技術(shù)規(guī)范 第1部分:純電動》
- Unit 6 Rain or shine Section A 2a-2e 說課稿 2024-2025學年人教版英語七年級下冊
- 登革熱診療方案(2024年版)
- 如何打造團隊氛圍:管理方法和技巧
- 統(tǒng)編版語文一年級下冊2024-2025學年度語文園地五(課件)
- 2025年江蘇省張家港市文化中心管委辦招聘3人歷年高頻重點提升(共500題)附帶答案詳解
- 中鐵開投、中鐵云投招聘筆試沖刺題2025
- 科室病歷書寫與管理制度
- 地震監(jiān)測系統(tǒng)服務(wù)方案及故障維修處理措施
- 新工會制度財務(wù)知識大賽題庫(預(yù)算、決算部分)
評論
0/150
提交評論