国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
調(diào)用C# Thread.Start()方法 - 51CTO.COM
    這里介紹調(diào)用C# Thread.Start()方法,在C#中,線程入口是通過ThreadStart代理(delegate)來提供的,你可以把ThreadStart 理解為一個(gè)函數(shù)指針,指向線程要執(zhí)行的函數(shù)。

     

    C#語言還是比較常見的東西,這里我們主要介紹調(diào)用C# Thread.Start()方法,包括介紹XX等方面。

    我們首先創(chuàng)建一個(gè)線程,使用Thread類創(chuàng)建線程時(shí),只需提供線程入口即可。(線程入口使程序知道該讓這個(gè)線程干什么事)

    在C#中,線程入口是通過ThreadStart代理(delegate)來提供的,你可以把ThreadStart理解為一個(gè)函數(shù)指針,指向線程 要執(zhí)行的函數(shù),當(dāng)調(diào)用C# Thread.Start()方法后,線程就開始執(zhí)行ThreadStart所代表或者說指向的函數(shù)。

    打開你的VS.net,新建一個(gè)控制臺(tái)應(yīng)用程序(Console Application),編寫完全控制一個(gè)線程的代碼示例:

            
    1. using System;  
    2. using System.Threading;   
    3.  
    4. namespace ThreadTest  
    5. {  
    6. public class Alpha  
    7. {  
    8. public void Beta()  
    9. {  
    10. while (true)  
    11. {  
    12. Console.WriteLine("Alpha.Beta is running in its own thread.");  
    13. }  
    14. }  
    15. };   
    16.  
    17. public class Simple  
    18. {  
    19. public static int Main()  
    20. {  
    21. Console.WriteLine("Thread Start/Stop/Join Sample");  
    22. Alpha oAlpha = new Alpha();  
    23. file://這里創(chuàng)建一個(gè)線程,使之執(zhí)行Alpha類的Beta()方法  
    24. Thread oThread = new Thread(new ThreadStart(oAlpha.Beta));  
    25. oThread.Start();  
    26. while (!oThread.IsAlive)  
    27. Thread.Sleep(1);  
    28. oThread.Abort();  
    29. oThread.Join();  
    30. Console.WriteLine();  
    31. Console.WriteLine("Alpha.Beta has finished");   
    32. try   
    33. {  
    34. Console.WriteLine("Try to restart the Alpha.Beta thread");  
    35. oThread.Start();  
    36. }  
    37. catch (ThreadStateException)   
    38. {  
    39. Console.Write("ThreadStateException trying to restart Alpha.Beta. ");  
    40. Console.WriteLine("Expected since aborted threads cannot be restarted.");  
    41. Console.ReadLine();  
    42. }  
    43. return 0;  
    44. }  
    45. }  

    這段程序包含兩個(gè)類Alpha和Simple,在創(chuàng)建線程oThread時(shí)我們用指向Alpha.Beta()方法的初始化了 ThreadStart代理(delegate)對(duì)象,當(dāng)我們創(chuàng)建的線程oThread調(diào)用C# Thread.Start()方法啟動(dòng)時(shí),實(shí)際上程序運(yùn)行的是Alpha.Beta()方法:

            
    1. Alpha oAlpha = new Alpha();  
    2. Thread oThread = new Thread(new ThreadStart(oAlpha.Beta));  
    3. oThread.Start();  

    然后在Main()函數(shù)的while循環(huán)中,我們使用靜態(tài)方法Thread.Sleep()讓主線程停了1ms,這段時(shí)間CPU轉(zhuǎn)向執(zhí)行線程 oThread。然后我們?cè)噲D調(diào)用Thread.Abort()方法終止線程oThread,注意后面的 oThread.Join(),Thread.Join()方法使主線程等待,直到oThread線程結(jié)束。你可以給Thread.Join()方法指定 一個(gè)int型的參數(shù)作為等待的最長時(shí)間。之后,我們?cè)噲D用C# Thread.Start()方法重新啟動(dòng)線程oThread,但是顯然Abort()方法帶來的后果是不可恢復(fù)的終止線程,所以最后程序會(huì)拋出 ThreadStateException異常。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
多線程1
初學(xué)C#線程二
C#多線程學(xué)習(xí)之a(chǎn)bort與join使用
VB.NET和VB6.0有什么區(qū)別(轉(zhuǎn)) - dlbird的博客 - 博客園
C#線程同步的幾種方法
VB.NET多線程開發(fā)實(shí)例
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服