net core 3.0 多線程學習1


 

問題: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM