Devart.Data.MySql.MySqlDependency不适用于多个连接

时间:2016-12-10 17:09:54

标签: c# mysql winforms visual-studio devart

我有一个关于Devart.Data.MySql.MySqlDependency类的问题。我想有两个依赖项检查数据库的变化,但有些我如何得到错误:

  

网络数据包乱序:收到[1],预期[7]

我无法使用MySqlException处理此错误。当我运行一个依赖项时,它工作正常,但当我使用它时,它会失败,并引发异常。

这是我用来运行这两个SqlDependencies的代码。

public void register(string id) {

        try
        {
            dept = new MySqlDependency();
            dept.AddCommandDependency(objcom);
            dept.CheckTimeout = 100;
            dept.OnChange += Dept_OnChange2;
            objcom.Connection.Name = id;
            string connection = objcom.Connection.ConnectionString;
            MySqlDependency.Start(connection);

        }  catch(MySqlException err) {//The exception is not being handled here}
    }

我创建了这个类的新实例,然后我调用了该方法。我这样做了两次,看起来像这样:

MySqlConnection objcon = new MySqlConnection(databasekoplingsadresse_devart());
        MySqlConnection objcon_ = new MySqlConnection(databasekoplingsadresse_devart());

        SqlDependenCyHandler depthandler = new SqlDependenCyHandler(objcon, "select * from messages");
        depthandler.register("obj1");

        SqlDependenCyHandler depthandler2 = new SqlDependenCyHandler(objcon_, "select * from tasks");
        depthandler2.register("obj2");

我非常感谢这件事的帮助

1 个答案:

答案 0 :(得分:1)

您可以只将不同的依赖项添加到同一个对象,而不是实例化两个不同的依赖项吗?像(未经测试的代码):

MySqlConnection objcon = new MySqlConnection(databasekoplingsadresse_devart());
MySqlCommand cmdMsg = new MySqlCommand("select * from messages", objcon); 
MySqlCommand cmdTasks = new MySqlCommand("select * from tasks", objcon); 

MySqlDependency dependency = new MySqlDependency(cmdMsg, 100); 
dependency.AddCommandDependency(cmdTasks); 
dependency.OnChange += Dept_OnChange2
MySqlDependency.Start(objcon.Connection.ConnectionString); 

这似乎更符合documentation显示的用法。