問題:net core 3.0不支持 t1.Abort(); 線程終止方法,會報異常。
異常信息:System.PlatformNotSupportedException:“Thread abort is not supported on this platform.”
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Thread t1 = new Thread(psleep);
t1.Start();
Thread.Sleep(TimeSpan.FromSeconds(6));
t1.Abort();
}
public static void psleep() {
for (int i = 1; i <= 10; i++)
{
Thread.Sleep(TimeSpan.FromSeconds(2));
Console.WriteLine(i);
}
解決參考:https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.threadabortexception?view=netframework-4.8
然而此參考,不好使。
換方案:參考網友:
既然不不能終止,我們就中斷吧:
Interrupt();
例如:
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");
}
}
}
}
多加個注意:https://www.cnblogs.com/HCCZX/p/11555751.html
1.這是一個 后台線程,IsBackground=true, 主線程完成后,后台子線程也停止了,即使 子線程 還有沒運行完,也要停止
2.因為線程IsBackground=false,不是后台線程,所以主線程即使完成了,子線程也會繼續完成
————————————————
版權聲明:本文為CSDN博主「盜理者」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_36051316/article/details/84172215