1. 程式人生 > >dotnetCore 執行緒中斷問題

dotnetCore 執行緒中斷問題

dotnetCore 執行緒終止問題,我們用中斷解決


不想看廢話的直接用這個方法:Interrupt();
連結:https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.thread.interrupt?view=netcore-2.1#System_Threading_Thread_Interrupt


在今天我使用dotnetcore多執行緒的時候,發現一個問題。
Thread居然沒有Abort() 方法。
看下圖: 僅限.NET Core 不支援此成員。。。。。。,六個句號獻給真香。
ABORT
那麼很多小夥伴還要用終止怎麼辦呢?
既然不不能終止,我們就中斷吧:
dangdangdangdangdangdang
:
Interrupt();
使用截圖如下:(執行6秒就中斷的截圖)
執行6秒就中斷的截圖

官方參考方法
https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.thread.interrupt?view=netcore-2.1#System_Threading_Thread_Interrupt

後面的就交給後臺自己釋放了。
記得加上

   thread.IsBackground=true;

現在交出完整核心程式碼:

using System;
using System.Threading;
namespace dotnetcoreThreadInterrupt
{
    class Application
    {
        public void Start()
        {
            Thread thread = new Thread(TtoRun);
            thread.IsBackground=true;
            thread.Start();
            for (int i = 0; i < 6; i++)
            {
                Thread.Sleep(1000);
            }
            thread.Interrupt();
        }
        public void TtoRun()
        {
            while (true)
            {
                Thread.Sleep(1000);
                System.Console.WriteLine("W");
            }
        }
    }
}

Gitbub連結: https://github.com/daolizhe/dotnetcoreThreadDemo

Github連結截圖

執行結果:記住是目錄dotnetcoreThreadInterrupt直接dotnet run就能用,如果版本不對,改個版本
執行結果