c# - 仅在后台操作较长时显示进度

标签 c# .net winforms background progress

我正在开发一个 C# 操作,我想显示一个模式进度对话框,但只有当操作很长时(例如,超过 3 秒)。我在后台线程中执行我的操作。

问题是我事先不知道操作是长还是短。

一些软件为IntelliJ有一个定时器方法。如果操作花费的时间超过 x,则显示一个对话框。

您认为什么是实现它的好模式?

  • 使用计时器等待 UI 线程,然后在那里显示对话框?
  • 我必须在显示对话框时 DoEvents() 吗?

最佳答案

这是我要做的:

1) 使用 BackgroundWorker。

2) 在调用方法 RunWorkerAsync 之前,将当前时间存储在变量中。

3) 在 DoWork 事件中,您需要调用 ReportProgress。在 ProgressChanged 事件中,检查时间是否已超过三秒。如果是,显示对话框。

这是 BackgroundWorker 的 MSDN 示例:http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx

注意:总的来说,我同意 Ramhound 的评论。只是始终显示进度。但如果您不使用 BackgroundWorker,我会开始使用它。它会让您的生活更轻松。

关于c# - 仅在后台操作较长时显示进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6943303/

相关文章:

c# - Bitmap.Save() 方法异常

.net - 程序终止自身进程的正确方法是什么(Windows)

.net - 同时学习多种编程语言会分散注意力吗?

c# - 表单上的三个面板布局

c# - 如何将自定义 propertyGrid 与 C# 中的标准控件连接起来?

c# - MarshalAs 是否会生成数组副本?

c# - 如何检查请求是否进入具有 [Authorize] 属性的方法?

.net - 检查程序是否抛出异常

c# - 可编辑标签控件

c# - 如何通过从其他表单获取值来重置用户控件