using
このステートメントは、開いているファイルやデータベース接続など、タイムリーにクリーンアップしたいリソースに非常に適していることは誰もが知っています。
Dispose()
リソースのクリーンアップがメソッドの目的ではなく、以前の状態にリセットする場合に、ステートメントを使用するのが良いことと見なされるかどうか疑問に思っていました。
たとえば、かなりの時間がかかり、Cursor を待機状態に変更するプロシージャを using ステートメントでラップできるようにするクラスです。
class CursorHelper : IDisposable
{
readonly Cursor _previousState;
public CursorHelper(Cursor newState)
{
_previousState = Cursor.Current;
Cursor.Current = newState;
}
public void Dispose()
{
Cursor.Current = _previousState;
}
}
その後、完了時に Cursor を元に戻すことを心配することなく、クラスをそのまま使用できます。
public void TimeIntensiveMethod()
{
using (CursorHelper ch = new CursorHelper(Cursors.WaitCursor))
{
// something that takes a long time to complete
}
}
using
これは、ステートメントの適切な使用法ですか?