この処理の間だけ待機カーソルを表示しておきたい、ってことが良くあります。
やり方をいろんなサイトで調べても、一時的にカーソルを待機カーソルに設定して、用が済んだたら戻す、というようなコードばかり見かけたのですが、
途中で例外が飛んできたらどうすんの?(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())
{
// ここを処理している間、待機カーソルになる
}
まだ、あまり検証していませんが。







