【发布时间】:2016-04-06 18:32:12
【问题描述】:
我正在学习跨线程,并且有一个关于如何从我创建的类(视图模型)更新主 UI 线程的问题。从我收集的信息来看,调度程序是要走的路。如何在类中使用主 UI 线程调度程序?或者有没有更好的方法来做到这一点。在此示例中,我将文本块数据绑定到计数值。我需要做什么才能让它发挥作用。谢谢!
class customVM : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChange(string PropertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
}
}
private int _count;
public int Count
{
get { return _count; }
set {
_count = value;
OnPropertyChange(nameof(Count));
}
}
public async void methodAsync()
{
await method();
}
private Task method()
{
return Task.Run(() =>
{
for (int i = 0; i < 10; i++)
{
Task.Delay(1000).Wait();
//*************
Count = i;
//*************
}
});
}
}
【问题讨论】:
-
不清楚的问题,在贴出的代码中,正常绑定是可以的。你还想做什么?
-
Count 绑定到文本块。发生交叉线程。
-
没关系,我猜跨线程可以在没有直接在 WPF 应用程序中使用调度程序的情况下工作。我在不同平台之间移动。