我如何从另一个方法中取消正在运行的方法。 c#.core 2.2

问题描述 投票:0回答:1
[HttpPost("WorkHard ")]
public ActionResult WorkHard ()
{
   ///
}

[HttpGet("CancelWorkHard ")]
public void CancelWorkHard ()
{

}
c# asp.net-core-mvc
1个回答
0
投票

我想你会明白的。

    private static CancellationTokenSource TokenSource { get; set; }
    private static Int32 Counter { get; set; }

    [HttpPost("WorkHard")]
    public IActionResult WorkHard()
    {
        TokenSource = new CancellationTokenSource();

        _ = Task.Run(async () =>
          {
              while (true)
              {
                  TokenSource.Token.ThrowIfCancellationRequested();
                  await Task.Delay(500);
                  Counter++;
              }
          }, TokenSource.Token);

        return Ok();
    }

    [HttpPost("CancelWorkHard")]
    public IActionResult CancelWorkHard()
    {
        TokenSource.Cancel();
        return Ok(Counter);
    }
© www.soinside.com 2019 - 2024. All rights reserved.