解决Oledb连接超时需要等待15秒的办法

本文介绍了解决Oledb连接在数据库未开启时等待15秒超时的问题。通过创建一个带超时异步执行的SqlInvoke类,利用异步超时原理,在指定时间内未返回数据则判断为超时,从而避免长时间等待。
摘要由CSDN通过智能技术生成

解决Oledb连接超时需要等待15秒的办法
Oledb在数据库未开情况下,需要等待15秒才会超时或报错,改什么超时时间都不起作用。
什么try catch之类的都是浮云.
即然数据库在正常情况下都是秒执行,那就从这个地方入手,能够正常返回来数据就表示正常,返不回来就有问题。
解决办法:利用异步超时原理,在指定时间内不返回直接判为超时,超时就证明连接有问题 。
1.首先建立超时类
#region 带超时异步执行
///
/// 带超时异步执行SQL
///
public class SqlInvoke
{
//信号量
private static AutoResetEvent autoEvent = new AutoResetEvent(false);
///
/// 检测方法 (超时返回True,未超时返回False)
///
/// 传入无参委托
/// 超时时长,默认3秒
///
public static bool Invoke(Action func, int ms = 3000)
{
CheckPar CheckPar = new CheckPar
{
Action = func,
AutoResetEvent = autoEvent
};
ThreadPool.QueueUserWorkItem(new WaitCallback(WorkMethod), CheckPar);
if (autoEvent.WaitOne(ms))
{
//Console.WriteLine(“收到信号”);
return false;
}
else
{
//Console.WriteLine(“超时”);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值