日期:2014-05-18  浏览次数:21315 次

c#如何做超时处理?比如打开个oracle数据库耗时太长。
我本来是一个线程定时器 Timer里面定时循环执行 con.open(),然后在executeNonqurey(),但是我发现 在用oracle连接的时候,要是突然拔掉网线 。。就会出现卡死的现象 本来 已经等一段时间之后 数据库会报错的 。然后捕获异常之后继续执行,但是我现在用微软那个操作oracle的类 并没有这样 。。就是一直卡死..我就想一种超时机制..
比如设置个10秒 假如超时 那就不要再去打开数据库 执行 了 直接跳出 有没有什么好的超时机制呢》?希望能有代码更好

------解决方案--------------------
可以设置DbConnection.ConnectionTimeout属性,连接的时候如果超过这个秒数就会抛出超时异常,你抓超时异常就行了,

另外也可以设置DbCommand.CommandTimeout属性,可能默认值过大,看起来卡死时间比较长,
------解决方案--------------------
http://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracleconnection.connectiontimeout.aspx

必须有的,这是基类属性