我正在尝试将尽可能多的处理移出我的 Windows Phone 应用程序的 UI 线程。当我点击一个按钮时,我有一些正在执行的代码。该代码在概念上类似于下面的代码。
private int Processing(int a, int b, int c) {
this.A = this.moreProcessing(a);
this.B = this.moreProcessing(b);
this.C = this.moreProcessing(c);
int newInt = /* ... */
return newInt;
}
public void Button_Click(object sender, EventArgs args) {
var result = Processing(1, 2, 3);
this.MyTextBox.Content = result;
}
如果处理方法没有设置/获取全局状态变量,那么在线程上移动该代码的执行将非常容易。
如何确保一次只有一个线程以正确的顺序运行?现在很容易,因为处理代码在 UI 线程上运行。UI 线程的好处是它可以保证一切都以正确的顺序运行,并且一次一个。我如何用线程复制它?
我可以将整个代码重构为几乎没有全局状态,但现在不一定要这样做。我也可以使用锁,但我只是想知道是否有更好的方法。我正在做的处理不是很重。但是,有时我会在 UI 中看到一些滞后,我希望尽可能保持 UI 线程自由。
谢谢!