我有一个按钮,当我点击它,我希望它与价值异步与标签文本
这是我的按钮
private async void Button_Click(object sender, RoutedEventArgs e)
{
await DoItAsync();
}
,这是DOIT更新UI!
public async Task DoSomethingAsync()
{
await Task.Run(()=>{
for(int i = 0; i < 2000; i++)
{
//labelName.Content = i.ToString();
Console.WriteLine(i);
}
});
}
,所以如果我运行上面的代码,请点击我的按钮,DoItAysnc被调用,所有的号码都显示在控制台中。
如果我未评论
labelName.Content = i.ToString();
我得到一个异常,事实上如下:因为不同的线程拥有它调用线程不能访问该对象。
我知道异步并等待不解决线程为你,但我确实认为这会工作。我想知道如何让这个工作,以便在每个i值都更新UI而不会导致UI无响应。
对此的任何好资源也会有帮助。
与往常一样,各种关于
这是什么? WPF,WinForms,Windows运行时? – Smeegs
欢迎来到UI线程世界。对于WPF学习Dispatcher,对于Winforms学习Invoke。 –
您需要为异步/等待做实际工作才有用。请显示你实际正在做的事情而不是一个人为的例子,在你当前的代码示例中有0个理由使用async/await或线程。 –