У меня есть следующий код:OracleCommand выполнения блоков, если есть OracleDependency
OracleConnection conn = new OracleConnection(connString);
OracleCommand command = new OracleCommand("select * from testtable", conn);
conn.Open();
OracleDependency.Port = 2010;
OracleDependency dependency = new OracleDependency(command);
command.AddRowid = true;
command.Notification.IsNotifiedOnce = false;
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
command.CommandTimeout = 1000;
DataTable t = new DataTable();
OracleDataAdapter adapter = new OracleDataAdapter(command);
adapter.Fill(t);
conn.Close();
Это очень простой код, который использует Oracle Notification Service для получения уведомлений о конкретных изменениях таблицы.
Моя проблема в том, что когда я вызываю adapter.Fill(t);
, выполнение просто блокирует. Команда выполняется в экземпляре, если к нему не привязана зависимость, поэтому это не база данных или данные. Я могу видеть вызов обратно регистрирующий с базой данных, запрашивая таблицу user_change_notification_regs
и также открыл порт, указанный (2010):
net8://(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST='myIp')(PORT=2010)))?PR=0
Я в конце остроумия и ранд из вещей, чтобы попробовать.