在调用 RunWorkerAsync 之后但在函数退出之前取消订阅 DoWork 是否安全?

2024-01-12

我有很多方法(虽然它们一次只运行一种),但它们都使用相同的RunWorkerCompleated and ProgressChanged方法,但它们都有不同的Dowork方法。执行以下操作是否安全:

private void button_Process_Click(object sender, EventArgs e)
{
    bgWork_Process.DoWork += Scrub_DoWork;
    bgWork_Process.RunWorkerAsync();
    bgWork_Process.DoWork -= Scrub_DoWork;
}

或者我可以这样做吗?我在 MSDN 上没有看到任何内容说这是不允许的,并且(到目前为止)它在我的程序中运行良好,但我想在这里检查一下是否有人遇到了这样做的麻烦。


为了确保事件处理程序在完成之前不会被删除,您可以执行以下操作:

Action DoWorkAction;

private void button_Process_Click(object sender, EventArgs e)
{
    gbHistory.Enabled = false;
    gbScrub.Enabled = false;
    DoWorkAction = new Action(Scrub_DoWork);
    bgWork_Process.DoWork += DoWorkAction;
    bgWork_Process.RunWorkerAsync();
}

并以任何方式处理你的完成

private void bgWork_Process_CompletedHandler(object sender, EventArgs e)
{
    bgWork_Process.DoWork -= DoWorkAction;
}

然而,我确实感觉到;分开可能会更好BackGroundWorkers您需要执行的所有操作,而不是共享类似的操作或包装在一个类中,这样您就可以更清楚地了解自己在做什么。

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

在调用 RunWorkerAsync 之后但在函数退出之前取消订阅 DoWork 是否安全? 的相关文章

  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • 假装 .NET 字符串是值类型

    在 NET 中 字符串是不可变的 并且是引用类型变量 这通常会让新的 NET 开发人员感到惊讶 因为他们的行为可能会将它们误认为是值类型对象 然而 除了使用实践StringBuilder对于长连接 尤其是 在循环中 在实践中是否有任何理由需
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • 如何使用 Fabric.js 设置对比度和饱和度

    我想在图像编辑器中设置对比度 饱和度和色调 为此 我使用fabric js 但它只有亮度选项 这是我的 Fabric JS 代码 function fabric Object prototype transparentCorners fal
  • 如何有效地将用户添加到 GitLab 中的所有项目(以编程方式或其他方式)

    我有一个包含许多项目的 GitLab CE 服务器 我想向所有项目添加用户 如果可能的话 我希望避免通过 UI 项目 gt 设置 gt 成员 gt 将用户添加到项目 来执行此操作 因为这将花费大量时间 实现此目的的一种方法是将所有项目移至一
  • XML 数据与命名空间的绑定

    我想使用 XML 文档的数据绑定来填充一个简单的表单 该表单显示有关人员列表的详细信息 我已经把一切都设置好了 现在就这样工作
  • 在设置和部署中预编译网站

    每次我使用安装和部署创建一个新的 Web 安装程序并运行它 在编辑属性中的所有好东西之后 输出始终是网站项目的副本 如何输出 WebSite 项目的预编译版本 我所做的是 发布网站 这样我就得到了预编译版本 将这个新的预编译网站作为现有网站
  • 在VBA中循环指定工作表

    我正在尝试使用我在这里找到的一些代码对于每个函数 循环遍历特定命名的工作表 https stackoverflow com questions 21761697 for each function to loop through speci
  • PyCharm 无法识别我的 Python 安装路径

    这是同样的问题this https stackoverflow com questions 23125024 rubymine doesnt recognize my ruby installation path否则 但为了Python 问
  • Babel 文件被复制而不进行转换

    我有这个代码 use strict import browserSync from browser sync import httpProxy from http proxy let proxy httpProxy createProxyS
  • 如何在Python中绘制悬挂根图?

    受此启发question https mathematica stackexchange com questions 120174 how to draw a hanging rootogram in mathematica 如何在 pyt
  • 如果下限大于上限,则创建空序列的序列构造

    不止一次体现R的 聪明 seq函数在极端情况下对我造成了严重的打击lower upper 1 gt 1 0 1 1 0 gt seq 1 0 1 1 0 gt seq 1 0 1 Error in seq default 1 0 1 wro
  • RethinkDB 如何生成自动 ID?

    我正在编写一个脚本 该脚本应该合并来自基于 SQL 的数据库的一些数据 每行都有一个长整数作为主键 增量 我正在考虑对这些 id 进行哈希处理 以便它们在某种程度上 看起来 像我的 RethinkDB 表中已有的其他 id 我在这里试图实现
  • 6 位整数的正则表达式不能是连续或重复的数字?

    我正在尝试获取一个正则表达式来检查以确保提供的 int 是 6 位数字 并且它不是连续的 也不包含所有重复数字 无论是升序还是降序 我并不关心正则表达式是否返回与不允许的数字的匹配 或者返回与允许的原始数字的匹配 例如 所有这些数字都是我需
  • Android 自动圆形图库

    我的图库小部件包含 1 10 张要滑动的图像 我知道当我在屏幕上进行条纹时 图像从左向右滚动 我想要自动循环图库在 10 后自动从第一张图像开始 有没有自动循环适配器或方法 final Gallery g Gallery findViewB
  • Scala XML 支持如何工作?

    我确信这应该是显而易见的 但我可以找到有关我的问题的任何参考资料 Scala XML 使用什么底层技术 它是类似 DOM 或 SAX 或 StAX 的东西吗 处理大型文档时我应该注意哪些性能损失 StAX 是否更高效 提前致谢 可以处理大文
  • CSS 变量名中允许使用句点吗?

    例如 我可以有一个名为如下的 css 变量 Button onHover 请注意 CSS 变量与 CSS 选择器不同 我必须解释这一点 因为有人将其标记为重复项 这是模块中的示例superfly css 变量 颜色 https github
  • 如何抛出不会终止我的程序的 IllegalArgumentException?

    好吧 我有一个带有 switch 语句的方法 但我省略了其余的情况 因为它们并不重要 在我的主要方法中 调用运算符方法并在 while 循环中传递参数 选择 直到他们选择 Q 当用户输入负数时 它应该抛出异常 打印一条消息 并忽略他们的输入
  • 在流畅的界面中实现条件

    我一直在尝试为我的系统中的一组规则实现一个流畅的界面 我想要完成的是这个 TicketRules RequireValidation When quartType gt quartType QuartType Before TotalMil
  • PHP奇怪的DOCUMENT_ROOT

    基本上 我正在编写一个框架 作为其功能的一部分 它应该为最终开发人员提供一组完善的 URI 路径 其中两条路径利用 SERVER DOCUMENT ROOT Absolute filesystem path to web root inst
  • 如何从 Jersey 的 ContainerRequest 中提取请求属性?

    HttpServletRequest有一个方法setAttribute String Object 我怎样才能从中提取这个属性ContainterRequest 我没有找到 getAttribute method Code public c
  • 创建 WooCommerce 自定义 API

    由于开箱即用的 WooCommerce REST API 中缺乏许多功能 我正在考虑创建一个 WooCommerce 端点 例如 付款 产品插件等 但我找不到任何可以开始的东西 也没有关于如何扩展 WooCommerce 以创建新端点的文档
  • 在调用 RunWorkerAsync 之后但在函数退出之前取消订阅 DoWork 是否安全?

    我有很多方法 虽然它们一次只运行一种 但它们都使用相同的RunWorkerCompleated and ProgressChanged方法 但它们都有不同的Dowork方法 执行以下操作是否安全 private void button Pr