我正在将 ReSharper 与 C#/VS2010 结合使用。我正在运行一个单独的线程,需要打开一个表单以在主 UI 线程上向用户显示一些信息。我的代码是这样的(效果很好):
this.Invoke(new MethodInvoker(delegate()
{
DisplayDownload form2 = new DisplayDownload();
form2.TopMost = true;
form2.Show();
}));
ReSharper想把它改成这样,我就这么做了(但下面的代码根本不显示表单):
this.Invoke(new MethodInvoker(delegate()
{
using (var form2 = new DisplayDownload {TopMost = true})
{
form2.Show();
}
}));
使用 ReSharper 修改后的代码,表单将不再显示。如果我回到旧代码,它工作得很好。
为什么ReSharper改了之后就不行了?有人可以向我解释一下是什么导致修改后的代码不再显示表单吗?
最佳答案
我相信这是由于 USING 关键字造成的。考虑到Show()不是阻塞调用,之后程序就离开了调用形式的using语句和Dispose()。
问候。
关于c# - 为什么我的 ReSharper 修改后的 form.Show() 代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6888397/