如何解决当后台工作人员正在进行时,无法停止表格关闭
我在c#winforms应用程序(Visual Studio 2010,.net 4)中有一个带有后台工作程序的表单。当后台工作人员忙时,当尝试关闭表单并取消关闭表单时,我想警告用户不要使用它。我想通过将表单关闭取消设置为true来处理表单关闭事件。 但是它仍然关闭表单! 这是我使用的代码片段:private void FormDrivenDistance_FormClosing(object sender,FormClosingEventArgs e)
{
if (myBackgroundWorker.IsBusy)
{
Messenger.ShowCriticalMessage(\"Don\'t close,in progress!\");
e.Cancel = true;
}
}
错误在哪里?
提前致谢!
解决方法
您确定
myBackgroundWorker.IsBusy
返回true
吗?您是否尝试过在支票内设置断点以确保其被调用?
您确定该事件已正确挂接吗?
如果这些情况是正确的,则该错误必须存在于代码的其他部分。
在FormClosing
上可能还会有其他处理程序,将Cancel
设置为false
,但这可能是不太可能的情况。
,如果在发送消息前先移动e.Cancel怎么办?
请注意,如果您试图防止争用情况并停止在工作程序完成之前关闭窗体时导致的InvalidOperationException,则不是100%这样做;您可以在完成本身(InProgress现在为false)和回调(OnWorkerCompleted)之间的时间间隔内将其关闭。您仍然需要以任何一种方式处理异常。
由于必须使用任何一种方式来处理它,因此最好还是让用户关闭表单。用户不得不等待他们不关心的事情来完成,这很麻烦。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。