這個問題有人在這裏的許多線程問,但我找不到明確的答案我的情況,我有一個簡單的代碼,Button
,Textbox
和ButtonClickEventHandler
,儘管後者儘管爲Async
,保持UI阻塞,代碼:用戶界面被異步/等待屏蔽
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private async void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
Task t = new Task(() =>
{
for (int i = 0; i < 10000; i++)
{
Dispatcher.Invoke((()=>
{
TextBox.Text += i.ToString();
}));
}
});
t.Start();
await t;
//Something else
}
}
的XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Margin="180,10,185,277" x:Name="Button" Click="ButtonBase_OnClick">
Ok
</Button>
<TextBox Margin="29,83,40,33" x:Name="TextBox"></TextBox>
</Grid>
</Window>
首先,爲什麼會出現這種情況? 其次,我應該做些什麼來使UI保持正常工作而不會掛起,始終遵循這個邏輯。
恭喜100k! – 2014-10-22 03:38:49
@YuvalItzchakov:謝謝! – 2014-10-22 12:01:25