Winform 更新长时间运行的任务

2024-01-08

当应用程序执行长时间运行的任务时,您是否有一个好的解决方案来保持“请稍候”winform“绘制”?

我尝试在每个步骤中使用 form.refresh() ,但是会发生一些长时间运行的查询,这意味着这不够频繁。

基本上是这个那么问题 https://stackoverflow.com/questions/148963/keeping-guis-responsive-during-long-running-tasks但是,通过 VSTO(而不是 Python)在 Excel 中使用 C#。


正如 statichippo 提到的,我将使用 BackgroundWorker 类。其目的是简化多线程并允许工作线程在不锁定 GUI 的情况下执行耗时的处理。

这是引用自MSDN http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx:

BackgroundWorker 类允许您 在单独的上运行操作, 专用线程。耗时 下载和数据库等操作 交易可能会导致您的用户 界面(UI)看起来好像 已停止响应 跑步。当您想要响应式 UI 时 并且您面临长时间的延误 与此类操作相关的 BackgroundWorker 类提供了 方便的解决方案。

这是一个关于如何在 Windows 窗体中使用 BackgroundWorker 类的很好的教程:使用BackgroundWorker类在WinForms中实现多线程 http://fernandof.wordpress.com/2007/04/04/implementing-multi-threading-in-winforms-using-the-backgroundworker-class/

对于复杂的场景,有更复杂的方法在 C# 中实现多线程,但对于大多数简单的场景,BackgroundWorker 效果很好(至少对我来说)。

以下是我从 Google 获取的有关 C# 多线程的一些链接:
MSDN 线程 http://msdn.microsoft.com/en-us/library/aa645740%28VS.71%29.aspx
C# 多线程简介 http://www.c-sharpcorner.com/UploadFile/mgold/MultithreadingIntro10062005000439AM/MultithreadingIntro.aspx

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

Winform 更新长时间运行的任务 的相关文章

  • C - 计算文件中的单词、字符和行数。字符数

    我必须用 C 编写一段代码 输出给定文件中的字符数 行数和单词数 任务看起来很简单 但我现在真的不确定出了什么问题 所以 这是代码 include
  • 线程独占数据:如何存储和访问?

    NET 中是否有可能将对象实例绑定到线程的当前执行上下文 这样在代码的任何部分我都可以做类似的事情CurrentThread MyObjectData DoOperation 并确保我访问特定于线程的数据 谢谢 你可以看一下线程静态属性 h
  • C++:字符串流有什么好处?

    谁能告诉我一些在 C 中使用字符串流的实际例子 即使用流插入和流提取运算符输入和输出到字符串流 您可以使用字符串流来转换任何实现operator lt lt 到一个字符串 include
  • Monitor.Pulse & Wait - 意外行为

    http www codeproject com Articles 28785 Thread synchronization Wait and Pulse demystified http www codeproject com Artic
  • C 链表销毁函数

    我正在尝试学习 C 和很多人一样 我对指针有点困惑 无论如何 我创建了一个递归函数来销毁我的链表 但是正如我调试的那样 当我从函数返回时 列表的头部不应该为空 所以我猜这是对指针的一些基本误解 这是函数 void destroy struc
  • 将视频上传/保存到数据库或文件系统

    我以前从未尝试过保存视频 所以我对此了解不多 我知道如果视频很小 我可以转换为字节数组并保存到数据库 但是为了提高效率 我想了解如何将任何上传的视频保存到我的服务器文件中 然后只保存该文件的文件路径我的数据库表中的视频 我完全不知道如何开始
  • 如何生成可变参数包?

    给定不相关的输入是否可以生成非类型参数包 我的意思是 我想改变这一点 template
  • 为什么我收到编译错误“使用已删除的函数 'std::unique_ptr ...”

    我收到一条巨大的编译错误消息 c mingw include c 6 1 0 bits predefined ops h 123 18 error use of deleted function std unique ptr lt Tp D
  • 编译器消息“警告:格式‘%s’需要类型‘char *’,但参数 2 具有类型‘char (*)’”

    我正在尝试运行一个简单的 C 程序 但收到此错误 警告 格式 s 需要类型 char 但参数 2 的类型为 char 20 我在跑步Mac OS X v10 8 https en wikipedia org wiki OS X Mounta
  • 如何解析多态 JSON 数组?

    我有一个 JSON 格式的文件 其中包含个人用户的记录 一些用户的记录中间有一个评论字段 我只想解析顶级项目 全名 贡献者姓名 电子邮件 使用 Newtonsoft JSON 解析器 但我似乎无法让它识别单个对象 当我将整个字符串解析为一个
  • 使用信号和槽更新指针

    我对 Qt 很陌生 请帮我解决这个问题 我正在使用线程在后台执行密集操作 同时我想更新 UI 所以我使用 SIGNALS 和 SLOTS 为了更新 UI 我发出一个信号并更新 UI 让我们考虑下面的示例代码 struct sample QS
  • 如何将输出重定向到 boost 日志?

    我有一个使用boost log的C 程序 我加载了用户提供的动态链接库 我想将 stderr 重定向到 boost 日志 以便用户的库随时执行以下操作 std cerr lt lt Some stuff 它产生相同的结果 BOOST LOG
  • 如何在 C 语言中获取输入中的空格

    我想从控制台获取字符数组 它还包含空格 我在 C 中知道的唯一方法是 scanf 但是一旦遇到空格 它就会停止接受输入 我该做什么 这就是我正在做的事情 char address 100 scanf s address 尝试使用 fgets
  • WCF 服务中的缓冲区大小

    我们有一个 WCF 服务 它执行某些存储过程并将结果返回给 silverlight 客户端 某些存储过程最多返回 80K 行 下面给出的是 web config 中服务的设置
  • 如何解决 boost::multi precision::cpp_dec_float 除法错误

    除以boost multiprecision cpp dec float有某种舍入误差 如下 include
  • C中使用JNI从对象获取对象

    public class Student private People people private Result result private int amount 这是 Java 中类的示例 在C中 我试图获取 学生 中的 人 但失败了
  • 为什么我无法通过 lambda 捕获“this”指针?

    考虑以下代码 class A public void foo auto functor this A a this auto functor a The compiler won t accept this instead of a a g
  • 使用 DataGridViewCheckboxCell 真正禁用 DataGridView 中的复选框

    有谁知道如何使用 DataGridViewCheckboxCell 禁用 DataGridView 中的复选框 我可以将其设置为只读 并设置背景颜色 但我无法让复选框本身显示为禁用状态 有什么想法吗 Guess 你必须自己画 http so
  • 如何从 C# 中的 Web Api 方法正确获取字节数组?

    我有以下控制器方法 HttpPost Route SomeRoute public byte MyMethod FromBody string ID byte mybytearray db getmybytearray ID working
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin

随机推荐

  • 让 fields_for 与 has_many 关系一起工作

    我在生成嵌套模型表单时遇到问题 这是我的模型 class Workout lt ActiveRecord Base has many scores has many users through gt scores accepts neste
  • Fiddler 使网页浏览速度非常慢

    虽然 Fiddler 对我来说工作得很好 但它似乎确实使浏览速度变得非常慢 在 Fiddler 运行的情况下打开这个网站只需要大约十秒钟 如果我关闭它 它几乎会立即加载 我想知道这是否就是 Fiddler 的工作方式 或者是否有一个选项或设
  • 我如何克隆/复制某种 iOS 的 UIView?

    下面的屏幕截图有助于解释我想要做什么 这背后的想法是我有一个UIView 与各种不同的UI里面的元素 例如 假设我有一个UIView 里面有一个UILabel 现在我想复制UIView 里面有标签 但不知何故之后我可能需要对标签进行更改 例
  • Vue.JS 倒计时不起作用

    我有一个 vue 应用程序 但倒计时效果不好 其实我不知道为什么 View parent timer 我看到了很好的价值 视图数据 data function return timer 3 这是我的倒计时功能 countdown funct
  • 检查 windows/page/document/iframe 是否有焦点

    我已经问过类似的问题 但我需要它来解决更具体的情况 所以我决定提出一个新问题 以免混淆 检查窗口是否有焦点 https stackoverflow com questions 17389280 check if window has foc
  • 确保一次仅运行一个 setTimeout(处于活动状态)?

    递归setTimeout函数 getRandomProducts 被调用onload在html body标签中 如此不断地迭代 正在调用函数 setCategoryTreeonclick来自导航栏嵌套 ul 中的链接 然后 该函数将变量 m
  • 图像处理中的联合直方图和边缘直方图是什么?

    什么是图像处理中的联合直方图和边缘直方图 它们如何工作以及如何构建联合直方图和边缘直方图 如果可能的话 提供简单的示例 例如 如果我有 10 个维度的特征空间 并且想要构建一个直方图 每个维度量化为 20 个值 如何计算联合直方图和边缘直方
  • gem 已安装,但“rails”命令不起作用

    当我运行任何 Rails 命令时 例如rails s我收到以下错误 在任何来源中均找不到 diff lcs 1 1 2 尝试跑步bundle install 不过 我已经安装了 diff lcs 捆绑显示 diff lcs opt loca
  • 为什么使用 SpringJUnit4ClassRunner/MySQL/Spring/Hibernate 时事务不回滚

    我正在进行单元测试 我希望提交给 MySQL 数据库的所有数据都将被回滚 但事实并非如此 尽管我的日志显示正在发生回滚 但数据正在提交 我已经为此奋斗了几天 所以我的设置发生了很大变化 这是我当前的设置 登录DAOTest java Run
  • C++ 中紧密耦合的并行类层次结构

    对于上下文 我正在研究 C 人工生命系统 http github com taliesinb floatworld 涉及由循环神经网络控制的代理 但细节并不重要 我需要将代理的 大脑 和 身体 的两个对象层次结构分开 我想要各种不同的大脑和
  • 抛出新的异常最佳实践[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 以下是好的做法吗 如果不是 应该做什
  • 如何使用 .NET / GDI+ 禁用子采样?

    我正在尝试使用 Bitmap 类保存 JPEG 图像 我注意到无论我指定的质量级别如何 锐利的边缘总是模糊的 我发现这是由于一个或多个通道的二次采样造成的 如何在保存图像时禁用子采样 我目前正在使用这段代码 EncoderParameter
  • 在“世界风”中单击时禁用地球仪移动

    我正在尝试在 世界风 中单击鼠标禁用地球仪的移动 我期望能够做到 void disableGlobeDrag WorldWindowGLCanvas ww ww addMouseMotionListener new MyMouseMotio
  • 获取 S&P 500 股票代码列表

    所以我用这个在 Python for Finance 上 它总是给我错误 1 line 22 in
  • 在 Windows 上的 Emacs 内从 py-shell 运行 Matplotlib 或 enthought.mayavi.mlab

    我可以从常规 cmd shell 正常运行以下代码 import matplotlib pyplot as plt fig plt figure plt show 它启动一个 Matplotlib 窗口 然而 使用 shell 或 py s
  • 在 web.config 的 appSettings 中使用“&”

    我正在尝试将网站地址存储在 web config 文件的 appSettings 部分中 URL 末尾有两个查询字符串参数 因此我需要使用 符号 当我在代码文件中硬编码 URL 时 如果我替换它就可以工作 amp 在配置文件中 这些字母是红
  • django 查询集上的复杂注释

    我遇到一个问题 无法从复杂的环境中获取所需的所有信息 annotate 调用我的 django 视图 这是我的模型 RECORD STATUS 0 Hidden 1 Unhidden 2 Deleted class Activity mod
  • 模拟网络连接不良

    我正在开发一个可以通过 LAN 访问互联网的嵌入式设备 我现在正处于测试阶段 我想测试当互联网连接较差时设备的性能 目前 该设备通过集线器连接到路由器 我用集线器通过 Wireshark 监控数据包 降低设备的互联网速度以模拟可能发生的场景
  • R计算数据帧中相似行的出现次数

    我有以下格式的数据 称为 DF 这只是一个简化的示例 eval num eval count fitness fitness mean green h 0 green v 0 offset 0 random 1 1 1500 1500 10
  • Winform 更新长时间运行的任务

    当应用程序执行长时间运行的任务时 您是否有一个好的解决方案来保持 请稍候 winform 绘制 我尝试在每个步骤中使用 form refresh 但是会发生一些长时间运行的查询 这意味着这不够频繁 基本上是这个那么问题 https stac