この処理の間だけ待機カーソルを表示しておきたい、ってことが良くあります。
やり方をいろんなサイトで調べても、一時的にカーソルを待機カーソルに設定して、用が済んだたら戻す、というようなコードばかり見かけたのですが、
途中で例外が飛んできたらどうすんの?(try finallyで捕まえてカーソル戻すの?)とかいちいち考えるのが面倒なので、クラス化してみました。
VC++MFCのCWaitCursorと同じようなものです。
using System; using System.Windows.Forms; namespace Takabosoft.Common.Forms { class WaitCursor : IDisposable { private Cursor old = null; internal WaitCursor() { old = Cursor.Current; Cursor.Current = Cursors.WaitCursor; } #region IDisposable メンバー public void Dispose() { Cursor.Current = old; } #endregion } }
(ファイナライザが無いのは仕様です^^;)
あとは、待機カーソルにしたい処理をusingで囲ってもらえれば、その間には待機カーソルになると思います。
例外が中で発生しても、ちゃんとカーソルが戻る予定です。
using (WaitCursor wait = new WaitCursor()) { // ここを処理している間、待機カーソルになる }
まだ、あまり検証していませんが。