如何在长时间运行的C#.NET CF 2.0进程中显示忙指示符?

时间:2010-07-28 13:45:22

标签: c# .net winforms compact-framework

我需要在执行long时在表单中显示“busy”指示符 运行单个命令(ReadXML或WriteXML)。到目前为止,我正在使用

Cursor.Current = Cursors.WaitCursor;

但是我正在寻找一种更加灵活的方式来做到这一点。没有必要 显示完成的百分比,只显示程序的可视参考 工作(如ProgressBar选框样式 - 不适用于.NET CF - )。

我正在使用C#/ WinForms / .NET CF 2.0

TIA

1 个答案:

答案 0 :(得分:3)

通常需要显示进度。但是你需要能够衡量进展才能使其变得有意义。猜测你的意思是DataSet.ReadXml(),该类没有任何类型的ProgressChanged事件,你可以使用它来让用户知道这个工作有多远。你也不能预先估计需要多长时间。执行时间大致与.xml文件的大小成比例,但精确比例无法准确猜测。

你所能做的就是让用户知道“我很忙,不要期待任何事情”。在过去的20年里,沙漏光标一直是这样做的标准方式。你可以通过动画获得更好的体验。这就是在选框模式下的ProgressBar的真正含义。它根本不能帮助用户。虽然它添加了一些信息:“操作系统没有崩溃”。 20年前有用。

您可以创建自己的动画。动画GIF是否适用于CF?如果没有,您可以自己翻转位图。但是,你需要承担额外的负担,你必须保持动画的动画效果。这要求您在另一个线程上运行ReadXml()调用,以便UI线程可用于保持图像更新。 CF中没有BackgroundWorker,你必须自己旋转那个帖子。