【发布时间】:2011-07-30 23:03:04
【问题描述】:
我有一个函数,它返回一个任务来做任何事情。
我有一个自定义表单 ProgressDialog,它的构造函数需要一个 Task 来执行。此对话框显示任务的状态,但并不重要。
对话框有一个取消按钮。如果用户点击它,任务应该被取消,但我该怎么做呢?我只有 Task 对象,没有 CancellationTokenSource(我可以用它取消 Task)。
为什么我不能通过任务对象本身取消任务?
【问题讨论】:
-
这就是 MS 实现 Task 的方式......另一点:取消令牌允许“合作”取消以避免数据丢失/损坏......这就是你不想使用的原因是吗?
-
Task 拥有 CancellationTokenSource 属性是可行的。为了我。原因在我的问题中。当用户点击取消按钮时,我会做这样的事情:task.CanncellationTokenSrc.Cancel();
标签: c# multithreading asynchronous task cancellation