日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C#多線程啟動(dòng)Square描述

學(xué)習(xí)C#語(yǔ)言時(shí),經(jīng)常會(huì)遇到C#多線程啟動(dòng)Square問(wèn)題,這里將介紹C#多線程啟動(dòng)Square問(wèn)題的解決方法。

淅川ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!

在實(shí)際工作中,還需要使用到C#多線程的許多復(fù)雜特性。其中一個(gè)問(wèn)題就是如何將程序的數(shù)據(jù)由線程類的構(gòu)造器傳入或者傳出。對(duì)于放到另外一個(gè)線程中的過(guò)程,既不能傳參數(shù)給它,也不能由它返回值,因?yàn)閭魅氲骄€程構(gòu)造器的過(guò)程是不能擁有任何參數(shù)或者返回值的。為了解決這個(gè)問(wèn)題,可以將過(guò)程封裝到一個(gè)類中,這樣,方法的參數(shù)就可使用類中的字段。

本文給出了一個(gè)簡(jiǎn)單的例子,計(jì)算一個(gè)數(shù)的平方。為了在一個(gè)新的線程中使用這個(gè)過(guò)程,將它封裝到一個(gè)類中,在一個(gè)新的C#多線程啟動(dòng)Square過(guò)程。

 
 
 
  1. public class SquareClass  
  2. {  
  3. publicdouble Value;  
  4. public double Square;  
  5. public void CalcSquare()  
  6. {  
  7. Square = Value * Value;  
  8. }  
  9. }  
  10. private void button1_Click(object sender, System.EventArgs e)  
  11. {  
  12. SquareClass oSquare =new SquareClass();  
  13. t2 = new Thread(new ThreadStart(oSquare.CalcSquare));  
  14. oSquare.Value = 30;  
  15. t2.Start();  

在上述例子中,線程啟動(dòng)后,并沒(méi)有檢查類中的square值,因?yàn)榧词拐{(diào)用了線程的start方法,也不能確保其中的方法馬上執(zhí)行完。要從另一個(gè)線程中得到需要的值,有幾種方法,其中一種方法就是在線程完成的時(shí)候觸發(fā)一個(gè)事件。下面所示的代碼為SquareClass加入了事件聲明。

 
 
 
  1. public delegate void EventHandler(double sq);//說(shuō)明委派類型  
  2. public class SquareClass  
  3. {  
  4. publicdouble Value;  
  5. public double Square;  
  6. public event EventHandler ThreadComplete;//說(shuō)明事件對(duì)象  
  7. public void CalcSquare()  
  8. {  
  9. Square = Value * Value;  
  10. //指定事件處理程序  
  11. ThreadComplete+=new EventHandler(SquareEventHandler);  
  12. if( ThreadComplete!=null)ThreadComplete(Square);//觸發(fā)事件  
  13. }  
  14. public static void SquareEventHandler(doubleSquare )  
  15. //定義事件處理程序  
  16. {   
  17. MessageBox.Show(Square.ToString ());}  

對(duì)于這種方法,要注意的是事件處理程序SquareEventHandler運(yùn)行在產(chǎn)生該事件的線程t2中,而不是運(yùn)行在窗體執(zhí)行的線程中。以上介紹C#多線程啟動(dòng)Square。


網(wǎng)頁(yè)題目:C#多線程啟動(dòng)Square描述
網(wǎng)址分享:http://www.5511xx.com/article/djpiccg.html