Callbackoncollecteddelegate检测到错误

时间:2012-05-20 18:25:54

标签: c# delegates callback

我创建了一个需要登录并连接到数据库的应用程序(C#)。该应用程序由多个用户控件组成,这些控件是主窗体的一部分。

namespace aNameSpace
{
    public partial class Login : UserControl
    {
        public delegate void LoginPressed(MySqlConnection connection, string userName);  
        public event LoginPressed successfulLogin;
        ...
        private void button_Login_Click(object sender, EventArgs e)
        {
            ...
            successfulLogin(connection, textBox_UserName.Text); 
        }

我将此控件添加到主窗体并使用LoginPressed事件。

public partial class form_Main : Form
{
    public form_Main()
    {            
        ...

        Login loginControl = tabControls[login] as Login;
        loginControl.successfulLogin += new Login.LoginPressed(login_successfulLogin);
    }

它成功登录并完全正常,直到我关闭应用程序,然后我得到此异常。

  

检测到CallbackOnCollectedDelegate消息:进行了回调   在垃圾收集的类型委托上   'System.Windows.Forms的!System.Windows.Forms.NativeMethods +的WndProc ::调用'。   这可能会导致应用程序崩溃,损坏和数据丢失。什么时候   将代理传递给非托管代码,他们必须保持活着   管理应用程序,直到它保证永远不会   调用。

我一直在研究这个错误,我认为这与代表被垃圾收集有关,或者与委托的生命周期有关......我已经尝试了很多东西,我可以'似乎摆脱了这个bug。有想法该怎么解决这个吗?

0 个答案:

没有答案