我有一個按鈕,當我點擊它,我希望它與價值異步與標籤文本
這是我的按鈕
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或線程。 –