问题标签 [cancellation-token]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
460 浏览

c# - 异步取消异常 Metro 对话框

我正在使用使用 ShowMessageAsync 方法的 MahApps Metro 对话框。在某些情况下,我会调用对话框然后取消它。我这样称呼对话框

并取消

当我使用以下示例对其进行测试时,这似乎效果很好

我也用过代币。ThrowIfCancellationRequested();因为显示和取消之间存在异步性。我的问题是,如果我在演出前取消它工作正常,如果我在演出后取消它工作正常,但如果我在演出后 0~500 毫秒之间取消它,它会引发 NullReference 异常。似乎 MahApps 代码中的某些内容不正确,除非它在完全初始化之前被取消。我试图想办法锁定它,所以我只能在它初始化后取消,但我找不到方法来判断它是否准备好?

更新:

这被简化为究竟是什么失败了。以下代码抛出 NullReference 异常

更新 2: 这会导致异常:

虽然这不是:

0 投票
2 回答
80 浏览

c# - 如何从事件处理程序方法内部获取对方法中定义的局部变量的引用?(没有更好的标题)

我有一个 tabControl,每次单击搜索按钮时都会在其中添加 tabPages。tabControl 对象还有一个 MouseDown 事件处理程序,以便在鼠标悬停在特定选项卡上并单击它时关闭选项卡。tabcontrol_MouseDown 方法还取消了在单击搜索按钮时启动的任务,因此该任务不会尝试使用已从 tabControl 中删除的 tabPage 及其 resultData 进行更新。

下面代码的问题在于它cts是一个对象变量,因此每次我使用新的 CancellationTokenSource 创建一个新选项卡时它都会被覆盖。如果我只需要向 tabControl 添加一个 tabPage,这可能会起作用,但我需要添加很多。

有没有一种方法可以在 searchButton_Click 方法中定义和创建一个取消令牌,并让 tabControl_MouseDown 找到对它的引用,或者有其他方法可以解决这个问题吗?

0 投票
1 回答
11248 浏览

c# - 正确使用 CancellationToken

这是我的情况:

调用 cancelToken 方法时,任务不会被取消。怎么来的?

我已阅读Microsoft 指南,以及有关取消任务的其他 Stackoverflow 问题。

但仍然难以正确使用它们。

0 投票
1 回答
5593 浏览

asp.net - 客户端可以取消 Web Api 请求吗?

我的 web api 控制器中有以下方法(长时间运行的方法尊重取消令牌,即如果请求取消,它们将不会运行):

客户端有以下代码来调用我的 web api 控制器:

如果客户端的请求在“LongRunningNetworkOperation2”被调用之前超时,cancellationToken会阻止“LongRunningNetworkOperation2”的运行吗?换句话说,客户端可以向 web api 发出信号以停止运行某个请求吗?

0 投票
1 回答
1874 浏览

c# - 在 .NET 控制台应用程序上使用 CancelKeyPress 事件

我在 v4.5.1 上编写了一个 .NET 控制台应用程序(在 C# 中)。我的Main方法如下所示:

可能的命令之一(由 处理ProcessCommand)调用一个长时间运行的进程,我希望能够通过Console.CancelKeyPress委托使用 CTRL + C 取消该进程。

但是当我这样做时,Visual Studio 会打开一个选项卡,上面写着“mscorlib.dll 未加载”,然后什么也不做 - 控制台保持打开但无响应。

我也尝试在调试之外运行该应用程序,但我找不到可执行文件。

0 投票
1 回答
571 浏览

c# - 如何使用 AsNoTracking 和 CancellationToken 查询大型 DbSet

我知道在 EF6 中做了很多工作来支持 CountAsync 等异步操作,但我似乎无法取消简单的查询。这是故事。

我有一个返回 450 万行的查询。我需要处理每一行,但我无法将它们全部保存在内存中。EF6 好心让我这样做:

这很好用并且使用很少的内存,但它不是很容易取消。我试过这种愚蠢的做法:

当然,这会尝试将整个查询加载到 List<> 中,它在加载所有行之前很久就崩溃了。值得庆幸的是,它对取消非常敏感。:)

我得到的最接近的是像这样包装整个混乱:

这不会占用内存,我可以取消它,但是取消需要永远响应,并且有一些令人讨厌的例外,因为我正在拉出地毯。

我在这里想念什么?

0 投票
2 回答
3801 浏览

asp.net - 如何取消 HostingEnvironment.QueueBackgroundWorkItem

有没有办法取消用 制作的后台任务HostingEnvironment.QueueBackgroundWorkItem

如果任务被取消,有CancellationToken哪些通知,但我该怎么做?参考https://msdn.microsoft.com/en-us/library/dd997396(v=vs.110).aspx

成功取消涉及调用 CancellationTokenSource.Cancel 方法的请求代码

好的。我在哪里可以访问CancellationTokenSource

0 投票
1 回答
483 浏览

c# - 基于return resutl取消TPL中的多个任务

我有一个场景,其中我有多个函数要并行调用,并且我正在使用 TPL 来完成该任务。我用过

现在,我需要等到所有函数都执行完毕并在并发字典中返回一些结果,以便我可以将其用于进一步处理,但是如果某些返回的结果为空,无论任务顺序如何,我也想取消任何任务。如果任何函数返回空结果,我需要同时取消所有剩余的任务。我也检查了“CancellationToken”类,但我很困惑在任务中使用它以及如何在任务中共享函数状态。

任何帮助将不胜感激。此致

0 投票
0 回答
547 浏览

c# - 向信号器客户端提供取消令牌

如何向信号器客户端提供取消令牌,以便能够停止长轮询操作?

我可以以某种方式将其添加到HubConnectionorHubProxy或基础HttpClient吗?

我在谷歌上没有找到任何东西:(

请帮忙。

0 投票
1 回答
1717 浏览

c# - 将取消令牌传递给调用方法VS任务构造函数?

传递取消令牌的一种方法是:

另一种方法是:

有什么区别?