处理订阅活动的班级

时间:2012-03-02 02:29:41

标签: c# winforms events .net-4.0 anonymous-methods

我有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 <{strong> MainForm.ProcessProgressChanged 的构造函数取消订阅匿名方法 MainFormControl.Dispose() 被称为时(或从MainForm中删除MainFormControl时)的事件

我的代码在C#,框架4中,在VS2010 Pro中构建,项目在WinForms中。

请帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:1)

没有。但如果控件在表格上并且表格正在处理,那真的无关紧要......

你需要注意的是当表单/控件连接到长时间运行的后端服务(单例等)时你必须注意那里因为事件可以/即使在控件/表单时也会触发处置。如果处理程序做了一些假设UI仍然存在的东西(即没有处理掉) - 你遇到了麻烦......