今天我将尝试了解 WPF 中的多线程进程。所以我做了一个很小的 WPF 应用程序,它只有一个窗口。在窗口中,您将找到一个按钮和一个文本框 - 仅此而已:
<Window x:Class="Multithreading.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 Content="Button" Height="23" Name="button1" Width="75" Click="button1_Click" />
<TextBox Height="23" Name="txtCounter" VerticalAlignment="Top" Width="120" />
</Grid>
好的 - 让我们看看我的点击事件:
private void button1_Click(object sender, RoutedEventArgs e)
{
ThreadStart ts = delegate
{
Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(Threddy));
};
new Thread(ts).Start();
}
如您所见,有一个委托方法“Threddy”:
public void Threddy()
{
for (int i = 0; i < 10000; i++)
{
txtCounter.Text = "" + i;
}
}
我希望现在很清楚我要做什么:如果用户单击按钮,则应该启动一个新线程,这会更改我的文本框的文本。但不幸的是,文本只改变了一次:最后。
那么 - 我做错了什么?谢谢你的帮助!
代码食人族