【发布时间】:2013-06-06 14:16:21
【问题描述】:
我有以下课程:
class MyClass
{
public void timeConsumingCode(){
for(int i=0; i<100; i++)
{
Threading.Thread.Sleep(1000);
}
}
}
然后我有我的 Form1 代码:
private void btn_RunTimeConsumingCode_Click(object sender, EventArgs e)
{
Task loadMasterFile = Task.Factory.StartNew(() =>
{
MyClass myclass = new MyClass();
myClass.timeConsumingCode();
});
}
到目前为止一切正常。但是我在表单上添加了一个进度条,我想根据i 的值更新它,即。如果i=34 则完成 34%。
我可以invoketimeConsumingCode() 中的进度条属性来更改值,但我希望将类与表单尽可能分开,以便将来可以将其移植到其他应用程序。
有没有一种方法可以更改我的进度条的值,而不必使 MyClass 依赖于 form1?
希望我说的够清楚
【问题讨论】:
-
如果这是 WinForms,
BackgroundWorker类非常适合这种类型的通知场景:msdn.microsoft.com/en-us/library/…