我想在我的主表单工作时以表格形式显示处理图像。
我已经创建了处理表单。
我用
尝试了ProcessingForm obj = new ProcessingForm();
obj.show();
DOSomeStuff();
obj.close();
它显示处理形式..但有时它没有响应......或者我的gif图像停止动画。
怎么做?
答案 0 :(得分:0)
您可以使用BackgroundWorker
类来分隔在表单消息处理和处理代码(如DoSomeStuff()
)下处理的进程。如果您想知道DoSomeStuff()
的进展情况,可以在后台工作人员中实施,因为这个课程支持它。
但是如果您的环境要慢于实时处理这两件事,那么您必须为BackgroundWorker提供最低优先级,然后您的图像可以实时工作,但您的工作时间会更长。 这不是一个好的解决方案,因为它取决于环境。
答案 1 :(得分:0)
我使用过CodeProject的this code。这是一个类似于Firefox使用的“旋转”计时器动画。
添加dll作为项目的参考,并在表单上删除进度指示器。
将其初始状态设置为不可见。
然后当您想要显示处理呼叫时:
this.progressIndicator.Visible = true;
this.progressIndicator.Start();
要在处理完成后将其删除,请致电:
this.progressIndicator.Stop();
this.progressIndicator.Visible = false;
它使用System.Windows.Forms.Timer
来控制动画并覆盖OnPaint
方法以绘制旋转的图像。这可能与您需要的一样准确。
我不是作者,但是我已经使用了它,并且没有任何问题,它会明显减慢实际过程。
但是,您必须将处理放到另一个线程上 - 使用BackgroundWorker
类,否则UI将不会更新。