cancellationtokensource相关内容

为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要这么长时间才能取消任务

在编写从服务器并行下载图像的类时(使用由DataFlow TPL库支持的消费者/生产者模式),使用ActionBlock和Flurl.Http工具方法DownloadFileAsync,我已经意识到取消操作需要很长时间。由于所有下载操作都共享一个CancellationToken,我预计所有任务都会立即(或几乎)取消。实际上,如果我产生大量并行下载,取消所有任务/线程可能需要几分钟时间。我已经解决 ..

正确取消异步操作并再次触发

如何处理用户可能多次点击按钮的情况,这会调用长时间运行的异步操作. 我的想法是首先检查异步操作是否正在运行,取消它并再次触发它. 到目前为止,我已经尝试使用 CancellationTokenSource 构建这种功能,但它没有按预期工作.有时有两个异步操作正在运行,所以当我开始新的操作时,“旧的"异步操作还没有被取消,这会混淆结果处理. 有什么建议或例子来处理这种情况吗? p ..

处理异步方法的取消

我使用 Parse 作为应用程序的数据存储,我正在实施他们的 Facebook 登录 功能.AFAIK,此登录方法与其他异步方法没有任何不同,因此希望它适用. 所以有一个 Login.xaml 页面,它有一个“用 Facebook 登录"的按钮,点击这个按钮会带你到 FacebookLogin.xaml 页面,其中只包含 WebBrowser 控件链接的解析文档.在 FacebookLogi ..

处理取消令牌源的正确模式

考虑这样一个场景,您需要完成一些异步工作,并且可以在即发即弃模式下运行它.这种异步工作能够侦听取消,因此您向它传递取消令牌以便能够取消它. 在给定的时刻,我们可以决定请求取消正在进行的活动,方法是使用我们从中获取取消令牌的取消令牌源对象. 因为取消令牌源实现了IDisposable,所以只要我们完成它,我们就应该调用它的Dispose方法.这个问题的重点是确定何时您完成了给定的取消令牌 ..

如何将 CancellationTokenSource 附加到 DownloadStringTaskAsync 方法并取消异步调用?

我创建了一个示例示例来使用 WebClient 使用 async 和 await 方法调用链接,现在我还想附加取消异步调用功能.但我无法获得 CancellationTokenSource 令牌并将 DownloadStringTaskAsync 附加到此取消令牌.以下是我的代码,谁能告诉我如何做到这一点. private async void DoWork(){this.Cursor = Cu ..
发布时间:2021-11-24 09:48:05 C#/.NET

为什么在取消大量HTTP请求时取消会阻塞这么长时间?

背景 我有一些代码可以使用来自一个特定主机的内容执行批量 HTML 页面处理.它尝试使用 HttpClient 同时发出大量(约 400 个)HTTP 请求.我相信最大同时连接数受到 ServicePointManager.DefaultConnectionLimit 的限制,所以我没有应用我自己的并发限制. 使用Task.WhenAll将所有请求异步发送到HttpClient后,可以 ..
发布时间:2021-11-24 09:30:46 C#/.NET

5 秒后取消长时间运行的任务未完成

我创建了一个创建 XML 字符串的任务.该任务可以持续数秒.当 5 秒后任务未完成时,我想“顺利"取消任务并继续编写其余的 XML.所以我在我的任务中内置了取消.但是虽然我在日志中看到以下消息: ProcessInformationTask 超时 我也在我的日志中看到了这一行 添加进程信息耗时 10001 ms 我想知道为什么会发生这种情况,因为我想在 5 秒后取消任务(如 ..
发布时间:2021-09-04 19:32:53 C#/.NET

使用取消令牌停止 Parallel.ForEach 并停止

我不确定是否按照我的意图停止了 Parallel.ForEach 循环.所以让我概述一下问题. 循环使用可用连接有限的数据库驱动程序,并且需要跟踪打开的连接,因此数据库驱动程序不会抛出异常.问题是跟踪打开的连接是手动实现的(这应该重构 - 编写包装器或使用 AutoResetEvent 但还有一些其他事情需要先处理).所以我需要跟踪打开的连接,尤其是我必须处理异常的情况: Parallel ..

F#线程中的取消令牌

我正在努力解决以下问题: 我有一个系统,它具有主要流程,并且具有两个可以启动和停止的后台线程,但是它们通常运行很长时间,因为它们仅在配置更改期间停止. 我发现在代码中的异步点检查了F#中的取消令牌.工作线程不执行任何异步操作;他们正在做后台工作,但是没有什么是异步的. 简化版本如下: let workerThread(someParameters)=异步{虽然是真的设置一些事 ..

有没有办法让我运行的方法立即停止使用cts.Cancel();?

我有创建CancellationTokenSource并将其传递给方法的代码. 我在另一个发布cts.Cancel()的应用程序中都有代码. 有没有一种方法可以使该方法立即停止,而不必等待while循环中的两行完成? 请注意,如果它引起了我可以处理的异常,那我就可以了. 公共异步任务OnAppearing(){cts = new CancellationTokenSource( ..
发布时间:2021-04-18 18:39:31 C#/.NET

检查CancellationToken是否已取消

我创建了一个演示项目,以帮助我了解如何使用取消令牌.我了解您已取消令牌并检查是否已请求取消,但是有什么方法可以检查是否已实现取消?在下面的示例中,我不想在DoWork()完成运行之前再次运行Work(). 公共类程序{公共静态CancellationTokenSource tokenSource;私有静态void Main(string [] args){一会儿(true){工作();}}公共静 ..
发布时间:2021-04-12 19:06:20 C#/.NET

如何使用CancellationToken取消任务并等待Task.WhenAny

我有Web应用程序,它调用不同的Web服务来执行不同的工作.一些Web服务将花费很长时间,而一些时间则很短.当完成或异常时,应用程序将并行调用所有Web服务以获取结果.我已经开始编写代码,但是我需要知道如何以最佳方式实现以下工作. 如果任何Web服务花费的时间超过5秒,则任务将被取消,但其余任务将继续调用Web服务以获取结果或除外. 我在示例代码中使用了CancellationTokenS ..

正确的模式以处理取消令牌源

请考虑一个方案,其中您需要完成一些异步工作,并且可以在即发即弃模式下运行它.此异步工作能够侦听取消,因此您将取消令牌传递给它以便能够取消它. 在给定的时间,我们可以决定使用正在使用的取消令牌的取消令牌源对象来请求进行中的活动的取消. 因为取消令牌源实现了 IDisposable ,所以我们应该尽可能地调用它的 Dispose 方法.这个问题的重点是确定何时使用给定的取消令牌来源. ..

使用CancellationTokenSource时,NetworkStream ReadAsync和WriteAsync无限挂起-Task.Result(或Task.Wait)引起的死锁

在阅读了有关Stack Overflow和Microsoft有关NetworkStream的文档的几乎所有问题之后,我不明白我的代码有什么问题。 我看到的问题是我的代码方法GetDataAsync()经常挂起。我从Init方法调用此方法,如下所示: public MyView(string id) { InitializeComponent (); MyViewModel ..

具有超时的WriteAsync

我尝试编写一个具有超时的简单异步写入,如下所示,并且在缓冲区很大且等待时间很小的情况下,我希望该函数抛出TaskCanceledException。但是,这不会发生。 WriteAsync将阻塞许多秒钟,直到写入完成。我想念什么? 公共异步void WriteWithTimeout(Stream os,byte [] buf,int waitMs) { CancellationToken ..
发布时间:2020-06-07 19:11:29 C#/.NET