我有一个包含ClassA类型成员的类。 ClassA类提供了一个耗时的方法DoWork()。我想在一个线程中调用此方法。让我们假设MainClass类是wpf应用程序的视图模型,应用程序有一个按钮。单击该按钮时,将调用Call_DoWork()方法。这是我的代码:
public class MainClass {
private classA _classA;
public MainClass() {
_classA = new ClassA();
}
public void Call_DoWork() {
Thread t = new Thread(() => { _classA.DoWork(); });
t.Start();
}
}
public class ClassA {
public void DoWork() {
// Do some time consuming things ...
}
}
当我运行应用程序并单击按钮时,线程阻止了gui。这是因为线程使用_classA成员。如果_classA成员在线程中被实例化,则gui不会被阻止,一切都很好。
我的问题:是否有另一种方法在线程中使用_classA成员而不阻止gui?
提前致谢
修改
我必须使用VS2010,目标框架是.NET 3.5。
答案 0 :(得分:0)
您是否考虑过使用BackgroundWorker Class?
它易于使用,而且它的好处是ProgressChanged
方法正在WPF应用程序的主UI线程上执行,因此您可以在后台执行期间使用它来更新UI。 / p>