亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

.net讓線程支持超時的方法實例和線程在執(zhí)行結束后銷毀的方法

 更新時間:2013年11月25日 09:36:28   作者:  
兩個問題:.net如何讓線程支持超時?.net如何讓線程在執(zhí)行結束后銷毀?本文就解決這二個問題


.net讓線程支持超時

使用 CancellationTokenSource

復制代碼 代碼如下:

private static void TimeoutTest1()
        {
            var cts = new CancellationTokenSource();

            var thread = new Thread(() =>
            {
                Console.WriteLine(String.Format("線程{0}執(zhí)行中", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(10000);
                Console.WriteLine(String.Format("線程{0}執(zhí)行中", Thread.CurrentThread.ManagedThreadId));
            });

            cts.Token.Register(() =>
            {
                thread.Abort();
            });
            cts.CancelAfter(1000);

            thread.Start();
            thread.Join();

            Console.WriteLine(String.Format("線程{0}的狀態(tài):{1}", thread.ManagedThreadId, thread.ThreadState));
        }

這里采用了 Abort 終止了線程,CancellationTokenSource 也支持其它模式,可以去官方看看文檔。

使用 Join

復制代碼 代碼如下:

private static void TimeoutTest2()
        {
            var thread = new Thread(() =>
            {
                Console.WriteLine(String.Format("線程{0}執(zhí)行中", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(10000);
                Console.WriteLine(String.Format("線程{0}執(zhí)行中", Thread.CurrentThread.ManagedThreadId));
            });

            thread.Start();
            thread.Join(1000);
            thread.Abort();

            Console.WriteLine(String.Format("線程{0}的狀態(tài):{1}", thread.ManagedThreadId, thread.ThreadState));
        }

.net讓線程在執(zhí)行結束后銷毀

線程執(zhí)行完、遇到未處理異常和被終止后就自動不可用了,如果是垃圾,自然會被 GC 給回收,有一點需要說明的是:線程的未處理異常會導致應用程序的終止,一個線程的異常不會自動冒泡到其它線程。

 

相關文章

最新評論