解决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(“超时”);
解决Oledb连接超时需要等待15秒的办法
最新推荐文章于 2021-08-06 12:11:56 发布
本文介绍了解决Oledb连接在数据库未开启时等待15秒超时的问题。通过创建一个带超时异步执行的SqlInvoke类,利用异步超时原理,在指定时间内未返回数据则判断为超时,从而避免长时间等待。
摘要由CSDN通过智能技术生成