我有这样的System.Windows.Forms.Form
:
public class MainForm : Form
{
int _processProgress;
public int ProcessProgress
{
get { return _processProgress; }
set
{
_processProgress = value;
if (ProcessProgressChanged != null)
ProcessProgressChanged(value);
}
}
public delegate void ProcessProgressChangedEventHandler(int progressPercentage);
public event ProcessProgressChangedEventHandler ProcessProgressChanged;
}
它有一个
UserControl
像这样:public class MainFormControl : UserControl
{
public MainFormControl()
{
((MainForm)this.ParentForm).ProcessProgressChanged += (progPerc) =>
{
this.TextBox1.Text = "asd";
// Do something
};
}
}
在调用
MainFormControl
时(或从MainForm中删除MainFormControl时),它会从MainForm.ProcessProgressChanged
事件的MainFormControl.Dispose()
的构造函数中取消订阅匿名方法吗?我的代码在C#,框架4,在VS2010 Pro中构建,项目在WinForms中。
请帮忙。提前致谢。
最佳答案
不会。但是,如果控件位于表单上并且正在处理表单,那真的没关系...
您需要注意的是表单/控件连接到长期运行的后端服务(子集等)时,您必须当心,因为即使处置了控件/表单,事件也可能/将触发。如果处理程序执行的操作假定UI仍然存在(即未处理),则会遇到麻烦...