今日は、WPF のマルチスレッド プロセスを理解しようとします。そこで、ウィンドウが 1 つしかない非常に小さな 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;
}
}
ユーザーがボタンをクリックすると、新しいスレッドが開始され、テキストボックスのテキストが変更されます。しかし残念なことに、テキストは 1 回だけ変更されます。つまり、最後です。
それで - 私は何を間違っていますか?ご協力いただきありがとうございます!
コード人食い人種