我正在开发一个 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/