申し訳ありませんが、私は WPF に関しては初心者です。
ボタンをクリックすると、関数の開始時にラベルに 1 つのメッセージが表示され、関数の完了時に別のメッセージが表示されるようにしたいと考えています。
ここのコードでは、ボタンがクリックされたときに表示される最後のメッセージの値のみが表示されます。誰かが私に理由を説明できますか?
これはうまくいかないので、私が本当にやりたいことを達成するにはどうすればよいでしょうか? あるメッセージ (「処理中」など) をしばらく表示し、関数が完了したときに別のメッセージ (「完了」など) を表示するにはどうすればよいでしょうか?
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageLabel.Content = "I never see this";
System.Threading.Thread.Sleep(2000);
MessageLabel.Content = "I only see this";
}
}
ありがとうブラシュマ!これは、BackgroundWorker オブジェクトで必要なことを行うコードです。
public partial class MainWindow : Window
{
private BackgroundWorker backgroundWorker1 = new BackgroundWorker();
public MainWindow()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.WorkerSupportsCancellation = false;
backgroundWorker1.DoWork += worker_DoWork;
backgroundWorker1.RunWorkerCompleted += worker_RunWorkerCompleted;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageLabel.Content = "I see this now";
if (backgroundWorker1.IsBusy != true)
{
backgroundWorker1.RunWorkerAsync();
}
}
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
System.Threading.Thread.Sleep(2000);
}
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageLabel.Content = "and I see this too";
}
}