私は標準の WPF MainWindow クラスを持っています。私が望むのは、 を使用してメッセージ ボックスを表示System.Windows.MessageBox
し、ユーザーからの応答を取得してから、実行時間の長い操作を実行することです (以下の呼び出しで をシミュレートしますSleep(...)
)。カーソルをCursors.Wait
操作前に設定し、最後に通常に戻したいです。これが私が持っているものです:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ui_button_Click(object sender, RoutedEventArgs e)
{
if (MessageBox.Show("Do you want to change the background?", "Change background", MessageBoxButton.YesNo) == MessageBoxResult.No)
{
return;
}
Cursor = Cursors.Wait;
Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
{
System.Threading.Thread.Sleep(1500);
if (Background != Brushes.Green)
{
Background = Brushes.Green;
}
else
{
Background = Brushes.White;
}
Cursor = Cursors.Arrow;
}));
}
}
これは機能しません。カーソルが待機カーソルとして表示されることはありません。ただし、行をコメントアウトすると、MessageBox
機能します。ここで何が起こっているのか、どうすれば意図したとおりに動作させることができますか?