Asp.net Core中thread.Abort()的替代方法?

时间:2019-02-06 13:07:59

标签: c# multithreading asp.net-core-mvc asp.net-core-2.1

asp.net核心中的thread.Abort()是否有其他选择,因为它不再支持.Core。

new ArrayList<>()

这是引发PlatformNotSupportedException异常。

我使用了thread.Interrupt(),但它没有按预期工作。

2 个答案:

答案 0 :(得分:4)

Thread.Abort()已被删除,以支持.NET Core中的CancellationTokens。

您可以了解有关如何使用CancellationTokens here的更多信息。

答案 1 :(得分:1)

这里的解决方案可能是使用共享变量,除非将其设置为false,否则它将允许线程继续运行,例如tickRunning来控制以下代码中的循环例如:

using System;
using System.Threading;

namespace SharedFlagVariable
{
    class Program
    {
        static bool tickRunning; // flag variable
        static void Main(string[] args)
        {
            tickRunning = true;
            Thread tickThread = new Thread(() =>
            {
                while (tickRunning)
                {
                    Console.WriteLine("Tick");
                    Thread.Sleep(1000);
                }
            });
            tickThread.Start();
            Console.WriteLine("Press a key to stop the clock");
            Console.ReadKey();
            tickRunning = false;
            Console.WriteLine("Press a key to exit");
            Console.ReadKey();
        }
    }
}
  

P.S。如果您更喜欢使用System.Threading.Task库,请查看this帖子,说明如何使用CancellationToken方法取消 Task