国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:14:53
字體:
來源:轉載
供稿:網友


.net讓線程支持超時

使用 CancellationTokenSource

復制代碼 代碼如下:


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

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

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

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

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

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

使用 Join

復制代碼 代碼如下:


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

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

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

.net讓線程在執行結束后銷毀

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

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东宁县| 长顺县| 罗甸县| 浦东新区| 潞城市| 洛扎县| 泗阳县| 敦化市| 鄂托克前旗| 聊城市| 长寿区| 连山| 西盟| 山丹县| 石狮市| 绵竹市| 莱西市| 阿拉善盟| 嵩明县| 中牟县| 乐东| 南皮县| 灵山县| 新巴尔虎左旗| 和政县| 崇义县| 云南省| 浏阳市| 沁阳市| 宁乡县| 五常市| 昌吉市| 河北区| 南城县| 城步| 汤原县| 池州市| 陆丰市| 同德县| 米脂县| 司法|