首页 > 解决方案 > 使用 aspx 页面时可以停止任务吗?

问题描述

如何Task从 aspx 页面停止和开始长时间运行?我知道如何CancellationTokenSource在 C# 中停止任务。在 Windows 窗体和控制台应用程序中。但似乎无法让它在 aspx 页面上工作。甚至可能吗?我很确定,因为该页面正在发布 UI 线程丢失了。下面是一个 Windows 窗体项目的示例。

private async void btnGetDataAwait_Click(object sender, EventArgs e)
{
   tokenSource = new CancellationTokenSource();
   try
   {
      btnGetDataAwait.Enabled = false;
      List<Person> people = await repo.Get(tokenSource.Token);
      foreach (var person in people)
      {
         listBox1.Items.Add(person);
      }
      btnGetDataAwait.Enabled = true;
   } 
   catch(OperationCanceledException ex)
   {
      MessageBox.Show(ex.Message, "TASK CANCELED");
   }
   catch(Exception ex)
   {
      MessageBox.Show(ex.Message, "EXCEPTION");
   }
}

如果您的任务故意处于无限循环中,您如何抓住相同的线程/任务并停止它?

标签: c#asp.netasynchronoustask

解决方案


推荐阅读