【发布时间】:2015-03-09 17:07:40
【问题描述】:
大家好,我有一个简短的问题要问大家。无论出于何种原因,一段代码不会定期返回,我还不能 100% 确定。为了解决这个问题,我想知道,使用下面的 Close() 方法,有没有办法让它超时?那么,如果它没有在 1 分钟左右的时间内完成,它会继续前进吗?
任何建议将不胜感激。谢谢,
如果有什么不同的话,写这篇文章的原作者指出他相信它挂在 close() 上并指出“也许太快了?” (该连接是与 Netezza 的 oledb 连接,整个应用程序是大量多线程的)。
无论如何,就目前而言,我只想让应用程序至少完成,而不是挂在那个异常捕获上。
下面是 Close();我相信这不会回来。
catch(Exception){
Close(); //-- if we have an error, close everything down and then return the error
throw;}
public void Close() {
if (null != Command) {
Command.Cancel();
Command.Dispose();
Command = null;
}
if (null != Connection) {
if (Connection.State != System.Data.ConnectionState.Closed)
Connection.Close();
Connection.Dispose();
Connection = null;
}
}
【问题讨论】:
-
请正确格式化您的代码。
-
您有一个名为 Command 的命令,它可以跨方法共享? DbCommand 有一个 TimeOut 属性,Finally 是您应该进行清理的地方。
标签: c# .net database multithreading netezza