【发布时间】:2013-05-29 13:31:13
【问题描述】:
我们都知道using 语句对于要及时清理的资源非常有用,例如打开的文件或数据库连接。
我想知道在资源清理不是Dispose() 方法的目标而是重置到以前的状态的情况下使用该语句是否被认为是一件好事。
例如,一个类允许 using 语句包装一个过程,该过程需要相当长的时间并将光标更改为等待状态。
class CursorHelper : IDisposable
{
readonly Cursor _previousState;
public CursorHelper(Cursor newState)
{
_previousState = Cursor.Current;
Cursor.Current = newState;
}
public void Dispose()
{
Cursor.Current = _previousState;
}
}
然后可以这样使用该类,而不必担心完成后恢复光标。
public void TimeIntensiveMethod()
{
using (CursorHelper ch = new CursorHelper(Cursors.WaitCursor))
{
// something that takes a long time to complete
}
}
这是对using 语句的适当使用吗?
【问题讨论】:
-
我不认为您发布的内容有什么问题,但是我认为通过为像您的示例这样简单的事情实现接口是矫枉过正和误导。
-
我的理解是
using在其作用域结束时调用IDisposable.Dispose ()。我认为using的这种用法没有任何问题,但它会是IDisposable的“坏”用法吗? -
@I4V 很好读,感谢发帖!
标签: c# using-statement