永发信息网

第二次调试程序卡死为什么?OracleDataReader odr = tmpCMD.ExecuteReader();

答案:2  悬赏:30  手机版
解决时间 2021-02-14 06:11
  • 提问者网友:喧嚣尘世
  • 2021-02-13 08:08
///
/// dep监听表变化
///

private void oracleLisentDep()
{
if (oracleDep == null || !oracleDep.IsEnabled)
{
OracleCommand tmpCMD = new OracleCommand("select * from kkk", oracleConn);
///oracleDep (cmd,是否一次后就移除注册,注册持续多长时间0为永久,True是保存在硬盘False是在内存数据库服务器重启后就丢失了);
oracleDep = new OracleDependency(tmpCMD, true, 0, true);
oracleDep.OnChange += new OnChangeEventHandler(OnNotificaton);
try
{
OracleDataReader odr = tmpCMD.ExecuteReader();// 就是从这句开始死掉!!!!!!
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
}
}
///
/// 当指定的表发生变化,指定触发的事件
///

private void OnNotificaton(object src, OracleNotificationEventArgs arg)
{
//可以从arg.Details中获得通知的具体信息,比如变化数据的RowId
try
{
DataTable dt = arg.Details;
MessageBox.Show(dt.Columns[0].ToString());
}
catch (Exception ex) { MessageBox.Show("错误信息"+ ex.ToString()); }

}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{ //退出程序时清除所有的注册
oracleDep.RemoveRegistration(oracleConn);
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
e.Cancel = false;
}

第一次调试是OK的
最佳答案
  • 五星知识达人网友:不如潦草
  • 2021-02-13 09:15
你是不是没有释放啊,看看odr可不可以close()掉 或者dispose()掉
全部回答
  • 1楼网友:往事隔山水
  • 2021-02-13 10:49
没看懂什么意思?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯