停止后台工作者

2023-12-04

我的应用程序使用后台工作人员在循环内执行一些工作。我拥有它,以便在每次循环迭代时,它检查取消挂起是否为真,如果是,则中断循环。一切正常,我的应用程序在完成循环的当前迭代后停止处理。问题是我认为后台工作人员仍在运行 - 如果我单击按钮再次开始处理,我会收到一条错误消息,指出后台工作人员正忙。

我本来打算处置该工作人员,但它是在表单运行时创建的,因此如果我处置它,它就不会再次开始工作。我真正想做的是,如果我单击“停止处理”按钮,则告诉后台工作人员它已完成,因此当我单击开始按钮时,它已准备好再次开始处理!

我本来想尝试这个:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
{ 
    while (!backgroundWorker1.CancellationPending) 
    {
        // Start processing in a background thread so the GUI remains responsive,
        // pass in the name of the text file produced by 
        // PFDR FilenameLogic(txtLetterType.Text); 
    } 
}

创建worker时,设置worker.WorkerSupportsCancellation to true. Now inside the DoWork处理程序,您必须定期(最常见的是,在某个循环开始时等)检查worker.CancellationPending- 如果为 true,则设置e.Cancel = true;(以便您可以区分完成和取消)、清理和退出(return;)。现在您的取消按钮可以调用worker.CancelAsync();它会采取适当的行动。

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

停止后台工作者 的相关文章

  • boost::noncopyable 是如何工作的

    我在 C 实践中偶然发现了两个愚蠢的问题 据我所知 c 中的复制构造函数和赋值运算符不是继承的 那么 boost noncopyable 在这种情况下如何帮助禁止这些东西呢 class X private boost noncopyable
  • 这种 ASP.NET 会话访问多用户安全技术吗?

    我正在研究一种在我公司的很多项目中都出现过的设计模式 它在历史上一直运行正常 但是我听到其他一些开发人员认为使用这种模式可能会导致会话损坏 我正在 Stack Overflow 上寻找其他 NET 开发人员的见解 基本上 有一个类 通常是s
  • 如何为 F# 应用程序编写退出处理程序?

    主题说明了一切 如果我的应用程序被 C 终止 我希望运行一些代码 Use AppDomain ProcessExit http msdn microsoft com en us library system appdomain proces
  • 处理可选依赖项 (C#)

    我们有一个可以选择与 TFS 集成的应用程序 但是由于集成是可选的 所以我显然不希望所有机器都需要 TFS 程序集作为要求 我应该怎么办 我是否可以在主程序集中引用 TFS 库 并确保在使用 TFS 集成时仅引用 TFS 相关对象 或者 更
  • Unix 编程。不确定如何使用 passwd 结构

    我做了一些研究 但仍在努力解决passwd结构 http www opengroup org onlinepubs 000095399 basedefs pwd h html http www opengroup org onlinepub
  • 如何重命名 MacOS/X 程序中的程序名称菜单标签?

    我有一个在 MacOS X 下运行的基于 Qt 的 GUI 程序 我希望能够更改该程序的第一个菜单标题的标签 即此屏幕截图中用红色圈出的标签 有没有一种编程方法可以做到这一点 假设不存在基于 Qt 的解决方案 则 Objective C 本
  • 编译器错误? g++ 允许可变大小的静态数组,除非函数是模板化的

    下面的代码演示了我无法解释的 gcc 4 6 2 的行为 第一个函数声明一个 vec t 类型的静态数组 其中 vec t 是 unsigned char 的 typedef 别名 第二个函数是相同的 只是 vect t 的类型是模板参数
  • NHibernate 继承 - 判别器值

    NHibernate 是否可以有一个像这样工作的判别器 如果值等于 String Empty gt Class1 其他 gt Class2 我已经有一个 CultureName 字符串列 我想将其用作鉴别器 我不想添加额外的布尔列 如果 C
  • 来自“void *”的dynamic_cast

    根据this https stackoverflow com questions 3155277 cannot dynamic cast void to templated class void 没有 RTTI 信息 因此从void 不合法
  • 对双向链表进行排序 C++

    尝试通过遍历列表的循环来完成此操作 在循环中 我将头节点输入到我定义的排序函数中 然后使用 strcmp 来确定节点中的哪个名称是否应该排在前面 它不起作用 因为写得太早了 我通过一次沿着列表一个节点进行线性比较 而不是回去查看第一个节点是
  • 像 MS Excel 一样在 C++ 中舍入双精度值

    我在网上进行了搜索 但找不到解决我的问题的方法 我只是想要一个像 MS Excel 那样对双精度值进行舍入的函数 这是我的代码 include
  • 查询 XmlDocument 而不会出现“命名空间前缀未定义”问题

    我有一个 Xml 文档 它定义并引用了一些命名空间 我将其加载到 XmlDocument 对象中 据我所知 我创建了一个 XmlNamespaceManager 对象 用于查询 Xpath 问题是我收到命名空间 my 未定义的 XPath
  • C# 中的任意精度小数?

    是否存在任意精度decimal类可用于 C 吗 我见过几个任意精度整数类 但这并不完全相同 您可以使用 J 库java math BigDecimal类 如果已安装 只需添加一个引用即可vjslib me remembers one of
  • .NET 中的字符串格式:将整数转换为固定宽度字符串?

    我在 NET C 中有一个 int 我想将其转换为特定格式的字符串 如果值为 1 我希望字符串为 001 10 010 116 116 etc 我正在寻找字符串格式 但到目前为止没有成功 我的值也不会超过 999 最简单的方法是使用 NET
  • 传递给 WCF 服务的可选查询字符串参数

    我想知道如何使用 string limit WebOperationContext Current IncomingRequest UriTemplateMatch QueryParameters Limit 在我的wcf中这个方法 Cit
  • MVC - 从视图调用控制器

    我是 MVC 新手 我正在使用 MVC 开发一个 Web 应用程序 该应用程序仅包含一个页面 所以在这个视图中我必须填充多个数据 假设应用程序是 新闻提要 应用程序 我需要填充最近的新闻 您喜欢的新闻 您朋友推荐的新闻等 那么我应该从视图到
  • 如何在控制台应用程序中创建事件循环/消息管道?

    我想创建一个注册了一些事件的控制台应用程序 问题是这些事件永远不会被触发 在这种特殊情况下Windows 窗体 http en wikipedia org wiki Windows Forms我应该调用的应用程序Application Ru
  • 如何在C++中动态调用函数

    除了 boost Bind Function 之外 我如何在 C 中动态调用函数 PHP has obj new MyObject function doSomething obj gt function Objective C 有 MyO
  • 着色器可以旋转形状以面向相机吗?

    我制作了一个球出现在 3D 空间中的场景 三角球耗费大量资源 所以我使用带有球纹理的二维表面 四边形 来完成此操作 但现在我需要在每次相机移动时调整形状的方向 我使用位置变换和 LookAt 方法来完成此操作 问题是我可以优化这个吗 如果可
  • 定义应保存 user.config 文件的自定义路径?

    如果我重命名我编译的应用程序 例如myapp exe to app exe然后 当我运行重命名的可执行文件时 会在此路径中生成新的用户设置文件夹 C Users User AppData Local CompanyName Executab

随机推荐

  • 信息窗口的替代品

    谷歌地图信息窗口的缺点之一是地图会移动 为信息窗口的显示腾出空间 冒泡 http econym org uk gmap ebuble html 克服了这个限制 它不会移动地图 然而 它有其自身的局限性 由于它的工作方式 您不能像信息窗口一样
  • CDI ConversationScoped 长时间运行的 Bean 不工作

    我在理解 Weld 或 CDI 的对话范围时遇到一些问题 在我的 JSF Faclets 页面中 我调用
  • 我从未见过的MySQL连接错误

    新的mysql错误 ERROR 42000 MySQL ODBC 3 51 Driver mysqld 5 5 9 You have an error in your SQL syntax check the manual that cor
  • 当 Angular 中的路线发生变化时结束可观察间隔

    我在 Angular 组件中启动一个间隔 但即使在我更改路线后它仍然会发出请求 如何停止间隔 returns an observable getAllPolls return Observable interval 2000 switchM
  • Snow Leopard 新的“突然终止”机制有缺点吗?

    Snow Leopard 有一项我从未听说过的新技术 突然终止 见突然终止 in 这个苹果文档 显然是一种告诉系统何时可以残酷地杀死您的应用程序的机制 而不是通过标准的退出机制 这应该有助于更快地注销 断电 休眠 首先 我不知道它 没有看到
  • WP7 / Silverlight]在列表框中绑定远程图像,这样UI就不会阻塞

    场景 Windows Phone 7 Silverlight 我有一个 ListBox 我将其简化为以下 XAML
  • Swift:使用 UISearchController/Predicates 过滤结构数组

    想知道是否有人可以帮助我在 Swift 中使用谓词进行过滤 我有一个有点混乱的数据源 我用它来填充 UITableView 数据源是一个结构体数组 该结构体定义如下 struct Exercises let category String
  • Azure 搜索突出显示带双引号的短语

    我们有一个天蓝色的Web应用程序 其中有一个搜索框 当我们输入带双引号的文本 例如 应用程序服务 时 它会正确列出带有 应 用程序服务 的记录 但它不仅突出显示 应用程序服务 而且还突出显示 应用程序服务 以及 服务 如果单独找到它们 可以
  • Docker 容器(不是 Docker 镜像)可以移动吗?

    我在以下网站上找到了此信息Docker 网站 Docker 容器可以运行 启动 停止 移动和删除 据我所知 Docker Images 可以移动 而 Docker Containers 则不能 但上面的信息明显位于 Docker 容器 标题
  • 错误的欧几里得距离 H2O 计算 R

    我使用 H2O 和 R 来计算 2 个 data frames 之间的欧几里德距离 set seed 121 create the data df1 lt data frame matrix rnorm 1000 ncol 10 df2 l
  • before_create 仍然保存

    在一切之前我要感谢你的帮助 我有一个这样的模型 attr protected nil belongs to product belongs to user before create add ammount def carted produ
  • 对于嵌入式应用程序从 std::string 切换到 std::wstring?

    到目前为止 我一直在嵌入式系统 路由器 交换机 电信设备等 的 C 应用程序中使用 std string 对于下一个项目 我正在考虑从 std string 切换到 std wstring 以支持 Unicode 例如 这将允许最终用户在命
  • 使用 vbscript 隐藏打开指定 url 和指定浏览器的链接

    我想转换这个批处理命令 start msedge exe new window https www google com 到 vbscript 文件 这样我就可以隐藏地打开它 我试过这个 Set WshShell WScript Creat
  • Pdf 的字段应在 asp.net 中使用 itextsharp 保持可编辑状态

    我有一个可填写的pdf 其中我有几个文本框 我使用以下代码 itextsharp 填充这些字段 DataTable dt new DataTable String pdfPath1 Server MapPath pdfs transmitt
  • 大文字显得模糊

    我正在使用 SFML 1 6 制作一个小游戏 我需要显示一些文本 所以我使用sf String班级 问题是 当我将尺寸增加到 96pt 时 边缘显得有点模糊 不过 当我增加 Microsoft Word 中的文本大小时 它看起来非常干净并且
  • 如何用Python四舍五入到小数点后两位? [复制]

    这个问题在这里已经有答案了 我在这段代码的输出中得到了很多小数 华氏度到摄氏度转换器 我的代码目前如下所示 def main printC formeln typeHere def typeHere global Fahrenheit tr
  • 使用 bash 脚本将密钥代码发送到 Xorg + wine

    如何将密钥代码发送到在 wine 下运行的 linux 中当前运行的应用程序 为了简单起见 我希望它位于 bash 下 使用名为xvkbd 它应该存在于每个 Linux 发行版中 语法很简单 xvkbd text line of keyco
  • CGAffineTransform 连接:适当的转换顺序

    我知道 每当我们想要对一个点同时应用一系列变换时 我们必须指定与我们想要感知的相反方向的序列 如果我想翻译 T 然后旋转 R 一个点x我们需要以串联矩阵结束RT 那么每个点都变换为 RT x 苹果转型文档显示 CGAffineTransfo
  • gnuplot:在for循环中设置线条样式

    我必须在同一张图上绘制几条曲线 我必须使用 for 循环来做到这一点 我想用线绘制前两条曲线 用点绘制其他曲线 我可以用线绘制所有曲线或用点绘制所有曲线 但不能在同一个 for 循环中进行更改 这是我的代码的相关部分 set style l
  • 停止后台工作者

    我的应用程序使用后台工作人员在循环内执行一些工作 我拥有它 以便在每次循环迭代时 它检查取消挂起是否为真 如果是 则中断循环 一切正常 我的应用程序在完成循环的当前迭代后停止处理 问题是我认为后台工作人员仍在运行 如果我单击按钮再次开始处理