处理Task.Run(...)和CancellationToken

时间:2016-06-21 17:41:21

标签: c# asynchronous task cancellation

虽然在await Task.Run( ... );被取消时搜索CancellationToken未被中断的原因,但我发现this SO帖子我已经知道它没有&{ #39;像开头一样直截了当地工作。

考虑到这一点,我可以使用CancellationToken强制在给定任务中停止/取消吗?

在同一篇文章中,我已经读过,在某些情况下,if检查给定的CancellationToken是否已被取消会产生我正在搜索的效果,问题是:我没有任何形式的循环 - 主要原因 - 我只是在Task.Run( ... );阻止方法>因此使用Task来阻止UI 的事实。

其他问题是Task位于点击事件中,因此用户可能会再次点击,由于Task未被取消,我担心变量可能会陷入中间,搞砸了应用程序。

基本上,这就是发生的事情:

  1. 用户到达那里。
  2. 用户输入所需信息。
  3. 发生重定向。
  4. 用户回来了。
  5. 任务开始运行。用户可以随时取消它。
  6. 如果用户等待操作完成

    1. 任务完成。结果存储在var。
    2. 处理var。
    3. 结果会显示给用户。
    4. 如果用户 等待操作完成并再次发出请求

      1. 用户取消操作。
      2. 用户再次进入步骤1,2,3和4。
      3. 任务开始运行。用户可以随时取消它。现在有2个任务正在运行相同的方法等待结果。
      4. 从现在开始,第一个任务可能会返回结果,而第二个任务(即应该获得结果的任务)可能会返回除预期值之外的其他值。 (我可能在这里错了
      5. 世界末日即将来临......
      6. 我该如何管理?我只使用Task.Run( ... )来避免UI被阻止。

0 个答案:

没有答案