ProcessProgressChanged

ProcessProgressChanged

我有这样的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仍然存在(即未处理),则会遇到麻烦...

10-08 17:12