何时处置 CancellationTokenSource?

2024-04-30

班上CancellationTokenSource是一次性的。快速查看 Reflector 证明了KernelEvent,(很可能)非托管资源。 自从CancellationTokenSource没有终结器,如果我们不处理它,GC就不会这样做。

另一方面,如果您查看 MSDN 文章中列出的示例托管线程中的取消 http://msdn.microsoft.com/en-us/library/dd997364.aspx,只有一个代码片段处理令牌。

在代码中处理它的正确方法是什么?

  1. 您不能使用以下方式包装启动并行任务的代码using如果你不等待的话。只有当您不等待时取消才有意义。
  2. 当然你可以添加ContinueWith执行任务时Dispose打电话,但这是要走的路吗?
  3. 可取消的 PLINQ 查询怎么样,它不会同步回来,只是在最后做一些事情?比方说.ForAll(x => Console.Write(x))?
  4. 它可以重复使用吗?是否可以将同一个令牌用于多个调用,然后将其与主机组件(例如 UI 控制)一起处理?

因为它没有类似的东西Reset清理方法IsCancelRequested and Token我认为它不可重用,因此每次启动任务(或 PLINQ 查询)时,都应该创建一个新任务。这是真的吗?如果是,我的问题是正确和推荐的处理策略是什么Dispose对那些许多CancellationTokenSource实例?


谈论是否真的有必要调用Dispose onCancellationTokenSource...我的项目中出现了内存泄漏,结果是CancellationTokenSource是问题所在。

我的项目有一项服务,它不断读取数据库并触发不同的任务,并且我将链接的取消令牌传递给我的工作人员,因此即使他们完成数据处理后,取消令牌也没有被处理,这导致了内存泄漏。

MSDN 托管线程中的取消 http://msdn.microsoft.com/en-us/library/dd997364.aspx明确指出:

请注意,您必须致电Dispose当您完成使用链接的令牌源时。有关更完整的示例,请参阅如何:监听多个取消请求 https://learn.microsoft.com/en-us/dotnet/standard/threading/how-to-listen-for-multiple-cancellation-requests.

I used ContinueWith在我的实施中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时处置 CancellationTokenSource? 的相关文章

  • 调试VS 2005提示“操作不支持”

    我一直在调试 VS 2005 并将 启动外部程序 设置为 C Program Files Microsoft Visual Studio 10 0 Common7 IDE devenv exe 但按 F5 后出现此错误 尝试运行项目时出错
  • 如何让JComboBox中的内容居中显示?

    目前我有这个JComboBox 我怎样才能将其中的内容居中 String strs new String 15158133110 15158133124 15158133458 JComboBox com new JComboBox str
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS
  • Android Jasper 报告

    Jasper Reporting 可以集成到 Android 应用程序中吗 我正在尝试从 jrxml 文件生成 PDF CSV 文本和 XLS 报告 但是 我没有看到 Android SDK 支持 net sf jasperreports
  • 查找总和为给定数字的值组合的函数

    这个帖子查找提供的 Sum 值的组合 https stackoverflow com a 20194023 1561176呈现函数subsets with sum 它在数组中查找总和等于给定值的值的组合 但由于这个帖子已经有6年多了 我发这
  • Bootstrap 3 / 显示模式不适用于 javascript 方式

    我用Modal http getbootstrap com javascript modalsBootstrap 3 0 的功能 我有这个代码 a href myNestedContent Open the modal containing
  • 在 VS2008 的 XAML 编辑器中禁用 Intellisense?

    有没有办法在 Visual Studio 2008 的 XAML 编辑器中禁用 Intellisense 打字时通常会消耗很大的性能 有时我会等待十秒或更长时间 直到列表自动弹出 似乎在 选项 gt 文本编辑器 gt XAML 中 Inte
  • 查询联系人 - 有时返回空游标

    我正在尝试查询联系人的显示名称 Override public void onActivityResult int requestCode int resultCode Intent data switch requestCode case
  • Swing:创建可拖动组件...?

    我在网上搜索了可拖动 Swing 组件的示例 但我发现示例不完整或不起作用 我需要的是一个摇摆组件那可以是dragged通过鼠标 在另一个组件内 被拖拽的时候 应该已经 改变它的位置 而不仅仅是 跳 到目的地 我很欣赏无需非标准 API 即
  • 如何检查设备上是否安装了文本转语音 (TTS) 的特定语言数据?

    我正在创建一个使用文本转语音的应用程序 我希望用户能够离线使用它 因此我检查设备上是否安装了 TTS 数据 以下是执行此操作的代码 Check tts data is installed Intent checkTTSIntent new
  • 如何调试 Gulp 任务?

    如何调试我的中定义的 gulp 任务gulpfile js使用诸如 Google Chrome 调试器之类的调试器逐行单步执行任务的代码 对于 Node js 6 3 版本 您可以使用 inspect flag https nodejs o
  • 在 javascript 中使用 xPath 解析具有默认命名空间的 XML

    我需要创建一个 XML xPath 解析器 所有解析都必须在客户端进行 使用 JavaScript 我创建了一个 javascript 来执行此操作 在默认名称空间发挥作用之前 一切看起来都正常 我根本无法查询具有默认命名空间的 XML 我
  • ggplot2 的 fortify 函数出错

    我在 ggplot2 中使用 fortify 方法时收到此错误 Error in function classes fdef mtable unable to find an inherited method for function pr
  • 嵌入式二进制资源 - 如何枚举嵌入的图像文件?

    我按照中的说明进行操作这本书 http www apress com book view 9781430225492 关于资源等的章节 我不太明白的是 如何替换它 images Add new BitmapImage new Uri Ima
  • 以 Rails 形式处理 MongoMapper EmbeddedDocument

    首先 我对一般编程和 Rails 都是新手 我选择 Rails 是因为它看起来是一种很容易上手的语言 对于我的项目 我将 MongoMapper 与 Rails 结合使用 我正在尝试以与文档相同的形式处理嵌入文档 我有以下模型 class
  • 在 for 循环比较中使用集合大小

    Java 中 Collections 的 size 方法是否有编译器优化 考虑以下代码 for int i 0 i
  • 给定文档,选择相关片段

    当我在这里提出问题时 自动搜索返回的问题的工具提示给出了问题的前一点 但其中相当一部分没有给出任何比理解问题更有用的文本 标题 有谁知道如何制作一个过滤器来删除问题中无用的部分 我的第一个想法是修剪仅包含某个列表中的单词的任何前导句子 例如
  • CLion - 命令行程序参数

    当我分配给 运行 调试配置 程序参数 之类的 aaa bbb 然后打印它时 任何人都可以告诉我 JetBrains CLion 有什么问题吗 printf s n argv 1 我刚刚得到 aaa 而它必须是 aaa bbb 因为它们用双引
  • 从 npm 脚本运行时,eslint 不会报告任何错误

    我已经使用 npm init eslint config 安装了带有 typescript 的 eslint 然后将 lint 脚本添加到我的 package json 中 但是当我运行 npm script lint npm run li
  • Android Espresso - 如果未选中,请单击复选框

    I have onView withId R id check box perform click 但我只想在尚未选中该复选框时执行此操作 我怎样才能在浓缩咖啡中做到这一点 我还想根据其之前的状态来切换复选框 开关 起初 我尝试用此方法打开

随机推荐

  • 如何在 Matplotlib 中指定类似箭头的线条样式?

    我想在 Matplotlib 中显示一组 xy 数据 以指示特定路径 理想情况下 将修改线条样式以使用类似箭头的补丁 我创建了一个模型 如下所示 使用 Omnigraphsketcher 看来我应该能够覆盖常见的之一linestyle声明
  • Azure DevOps Rest Api 是否返回正确数量的拉取请求?

    我们正在尝试收集有关拉取请求的信息 以便为我们的部门建立某些指标 完成拉取请求需要多长时间 Azure DevOps 提供了一个 API 来查询很多东西 包括拉取请求 我在这里查了一下用法 https learn microsoft com
  • 页面加载后自动执行.on()函数

    I use container on click contentEffects 使一些 jquery 代码在 ajax 调用后再次工作 不过 我希望 on 函数可以在页面加载后立即自动执行 并且无需click事件 那可能吗 请看一下我的网站
  • 如何使用 PHP 在文本区域中显示 Word 文档?

    我试图使用 com 类测试代码来显示 Word 文件 但我似乎无法得到答案并且仍在搜索 我遇到错误 有时程序根本不显示任何内容 请给我一些想法 我正在使用 PHP 4 如果站点托管在装有 Word 的 Windows 计算机上 您可以使用
  • 使用Core Data中的Cascade删除关系对象

    我希望使用核心数据执行一些简单的删除 但仅需要对此的一些建议 我有一个包含交易 名称 事件和日期实体的模型 该交易与其他每个实体都有链接 在应用程序中 当用户将信息添加到文本字段时 该信息会保存到 4 个选项卡的表格视图控制器中 第一个选项
  • 伽玛分布拟合误差

    对于分类任务 我想将伽玛分布拟合到两对数据 类内和类之间的距离人口 这是为了确定理论错误接受率和错误拒绝率 The fit Scipy returns puzzles me tough A plot of the data is below
  • 实现批量记录获取

    在程序开始时 我需要将数据从 MS Access 数据库 mdb 读取到下拉控件中 这样做是为了每当用户在该控件中键入内容时 应用程序都可以自动完成 不管怎样 从数据库中读取数据花了很长时间 所以我想我应该实现批量行获取 这是我的代码 CS
  • 有没有办法从 Symfony 应用程序中的 url 中删除 '/web' 而不将 'web' 目录的内容移动到根目录?

    我在使用 Symfony 创建应用程序时遇到一个问题 即 url 中出现 web 我找到了一种方法来摆脱这个问题 将 web 目录的内容移动到根目录 但我认为这不是一个好的开发实践 必须有其他方法 谁能告诉我是否还有其他方法可以做到这一点
  • C++ 类名注入

    根据标准 class 2 类名也被插入到类本身的范围中 这被称为注入类名 此外 basic scope pdecl 9 声明要点注入类名 第 9 条 紧跟在类定义的左大括号之后 最后 basic lookup classref 3 及其示例
  • 选择项目后如何完全折叠 SearchView?

    我已经为此苦苦挣扎了好几个星期 我有一个全局搜索 它提供了一个自定义列表视图 并在用户输入时提供建议 当用户选择一个选项时 我希望搜索视图返回到完全折叠的状态 相反 它会缩小 但仍保持稍微扩大的视图 我已经把我能找到的所有东西都扔到了这件事
  • 使用自动布局,如何使同一“行”上的两个标签的宽度是动态的(根据每个标签需要的宽度进行调整)?

    假设我有两个 UILabel 一个是 URL 一个是计时器 http website com link to specific story 9m 42s 但是 计时器 UILabel 的宽度变化很大 有时只是12s例如 其他时候是125h
  • 如何更新 StatusBar 样式作为自定义转换的一部分

    我使用的是 iOS 7UIviewControllerAnimatedTransitioning呈现模式的协议ViewController带有自定义动画 动画工作正常 但是我想要新呈现的ViewController具有与当前 VC 不同的状
  • 是否可以通过 DynamicProxy 将属性添加到类型?

    我使用 Castle DynamicProxy 在运行时创建给定类型的代理 包括几个 mixin 我试图弄清楚是否也可以向代理添加任意属性 例如 class BaseType string Foo get set 在运行时 我创建一个新类型
  • SQL SELECT 在父亲 ID 组织树中查找循环引用?

    带有循环引用的 乐趣 假设我有一个表 ELEMENTS 其中包含元素的层次结构 由父 ID 建模 对于根来说 父亲 ID 字段为空 所有其他记录都有一个非空父 id 和 自动排序的 主键 ID 的父元素 例如 使用 SELECT FROM
  • AngularJS ui.router 更改页面并转到特定部分

    我使用 AngularJSui router在我的应用程序中 对于新的用例 我想更改视图index html到我的partialview options html 我的options html有不同的部分 不同视图之间的路由工作正常 但我想
  • 在螺旋线上画等距点

    我需要一种算法来计算螺旋路径上的点的分布 该算法的输入参数应为 环路宽度 距最内环路的距离 点之间的距离固定 绘制点数 要绘制的螺旋是阿基米德螺线并且获得的积分必须是等距离来自彼此 该算法应该打印出单点的笛卡尔坐标序列 例如 点 1 0 0
  • 如何有效地将多个 pandas 列组合成一个类似数组的列?

    使用对象类型列之类的东西创建 或加载 DataFrame 很容易 如下所示 In pdf pd DataFrame a 1 2 3 b 4 5 6 c 7 8 9 combined 1 4 7 2 5 8 3 6 9 Out a b c c
  • 在 WSL2 中通过 IDE 连接到 kafka 服务器时出错

    我无法通过在 Windows 上运行的 intellij 或 vscode 连接到在 ubuntu 上运行的 kafka 服务器 我在 WSL2 上尝试的第一个服务器 我什至尝试使用虚拟机的IP 但没有成功 据我了解 我们应该能够根据此文档
  • 如何更改 Oracle 云实例的公钥?

    我不小心删除了我的公钥和私钥 并且由于无法恢复密钥 并且在任何地方都没有备份 而不得不生成新的 SSH 密钥 如何更改 Oracle Cloud 实例的公共 SSH 密钥 终止实例并重新创建它不是一个选择 我尝试在网上查找但找不到太多内容
  • 何时处置 CancellationTokenSource?

    班上CancellationTokenSource是一次性的 快速查看 Reflector 证明了KernelEvent 很可能 非托管资源 自从CancellationTokenSource没有终结器 如果我们不处理它 GC就不会这样做