什么会导致 OdbcDataReader 挂起?

Posted

技术标签:

【中文标题】什么会导致 OdbcDataReader 挂起?【英文标题】:What would cause an OdbcDataReader to hang? 【发布时间】:2010-12-15 13:54:39 【问题描述】:

在我的 C# 代码中,我有一个 ODBC 数据读取器,它是使用参数调用存储过程的结果。 当客户运行程序时,在使用 while 循环从 datareader 检索结果时,在某些时候它会被 rdr.Read() 命令停止,并等待未定义的分钟数,然后继续。

while (rdr.Read()) Somecode...

什么可能导致这种行为?

【问题讨论】:

ODBC 是许多不同数据源的抽象层,不知道您要连接到的数据源的确切类型,以及有关调用过程的详细信息、数据的类型/数量正在处理中,没法说。 Read 方法可能每次调用时都在访问数据库,所以你描述的可能会在数据库繁忙时发生。尝试将数据读入 DataTable。 【参考方案1】:

在某些时候它会停在 rdr.Read() 命令,待命 未定义的分钟数和 然后继续。

因为它正在等待数据。基本上看数据源,搞清楚为什么挂了。

读者的约定是“要么等待数据,要么抛出异常”。显然,您的数据源有很长的超时(或没有),并且数据没有流入(如您所料)。

【讨论】:

以上是关于什么会导致 OdbcDataReader 挂起?的主要内容,如果未能解决你的问题,请参考以下文章

将空数据写入非阻塞套接字会导致epoll_wait挂起

nfs问题导致df挂起

连续拖放导致挂起

PySide QtCore.QThreadPool 和 QApplication.quit() 导致挂起?

编写多个视频会导致挂起

“范围:”http 标头导致 ColdFusion 应用程序挂起