0

我想在当前线程上执行第 3 方函数(以避免开销),但希望能够随时使用CancellationToken来中断该函数。

这就是我创建和运行任务的方式:

var task = new Task(proc, cts.Token); // cts is my CancellationTokenSource
task.RunSynchronously();

cts.Cancel()(在单独的线程上)被调用后,任务不会停止

我在 F# 中找到了一个可以解决问题的静态函数:

Async.RunSynchronously(computation, timeout, cancellationToken)

我确信应该有一个简单的 C# 解决方案,你能帮我吗?

4

1 回答 1

1

我认为您误解了取消令牌的工作原理。它们不会杀死工作线程——工作函数需要定期检查取消令牌并查看它是否应该停止。来自http://msdn.microsoft.com/en-us/library/dd997289(v=vs.110).aspx

接收通知的对象可以以任何适当的方式响应。

在此处查看更多信息,包括示例:http: //msdn.microsoft.com/en-us/library/dd997396 (v=vs.110).aspx

短篇小说——如果你想停止执行一个运行第三方函数的线程,该函数不支持取消令牌,你需要找到另一种方法。

于 2014-05-31T02:50:44.203 回答