Devart.Data.MySql.MySqlDependency 不适用于多个连接
Devart.Data.MySql.MySqlDependency does not work on multiple connections
我有一个关于 Devart.Data.MySql.MySqlDependency class 的问题。我希望有两个依赖项检查数据库的更改,但我是如何得到错误的:
Net packets out of order: received[1], expected[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}
}
我创建了其中 class 的一个新实例,然后调用该方法。我这样做了两次,它看起来像这样:
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");
在此问题上我非常感谢帮助
您可以不实例化两个不同的依赖项,而是将不同的依赖项添加到同一个对象中吗?类似(未经测试的代码):
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 显示的用法。
我有一个关于 Devart.Data.MySql.MySqlDependency class 的问题。我希望有两个依赖项检查数据库的更改,但我是如何得到错误的:
Net packets out of order: received[1], expected[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}
}
我创建了其中 class 的一个新实例,然后调用该方法。我这样做了两次,它看起来像这样:
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");
在此问题上我非常感谢帮助
您可以不实例化两个不同的依赖项,而是将不同的依赖项添加到同一个对象中吗?类似(未经测试的代码):
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 显示的用法。