我的工作线程中有以下代码(ImageListView
下面是派生自的Control
):
if (mImageListView != null &&
mImageListView.IsHandleCreated &&
!mImageListView.IsDisposed)
{
if (mImageListView.InvokeRequired)
mImageListView.Invoke(
new RefreshDelegateInternal(mImageListView.RefreshInternal));
else
mImageListView.RefreshInternal();
}
Run Code Online (Sandbox Code Playgroud)
但是,我ObjectDisposedException
有时会得到Invoke
上面的方法.似乎控制可以在我检查IsDisposed
和呼叫之间处理Invoke
.我怎么能避免这种情况?
对于锁定,我使用的是一个对我的应用程序来说是全局的静态对象:
public class MvcApplication : System.Web.HttpApplication
{
public static readonly object AppLock = new object();
...
}
Run Code Online (Sandbox Code Playgroud)
用它来锁定代码:
lock(MvcApplication.AppLock)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我们暂时不要考虑性能影响.在这种情况下,我能100%确定能避免死锁吗?