小ネタですか、.NETフォームアプリケーションで、いわゆるウエイトカーソルを表示させたいときの処理についてです。
Application.UseWaitCursorとControl.UseWaitCursorのプロパティですが、これらはいわゆるメインスレッドの制御を止めてしまいます。そのため、メインスレッドからUseWaitCursorを変更するのは適切ではありません。別スレッドからメインスレッドをどうしても止めたいときに使うことを想定しているようです。
そのため、単純にメインスレッドで、どうしても時間がかかってしまう処理をする場合には、Form.Cursorプロパティを変更するが適切でしょう。処理の前にForm.CursorにCursors.WaitCursorを設定して、終了後にCursors.Defaultに変更するという処理になります。
そもそも、メインスレッドで処理をしているので、アプリケーションはフリーズ状態なので、カーソルを変更するだけでよいということになります。
0 件のコメント:
コメントを投稿