有没有办法让它读取数据库连接不上的时候不卡程序界面?Timer控件依旧隔几分钟连接数据库,连不上的算了,连得上就更新显示右下角信息,不影响界面的其他功能。
请帮忙给出例子代码,谢谢!
9 个解决方案
#1
在连接字符串中写timeout,默认链接30秒,你可以改成3秒
这个不是command的timeout,链接的timeout只能写在连接字符串中
这个不是command的timeout,链接的timeout只能写在连接字符串中
#2
是这样子吗?
SqlConnection conn = new SqlConnection(" Uid=sa;Pwd=***;Initial Catalog=Northwind;Data Source=LocalHost;Connect Timeout=900")
那个timeout的单位是秒吗?
#3
应该是的,你查下呢
#4
上面是一个方法,但难免还会有短暂的卡顿,你也可以选择线程解决,用线程解决这类问题的更多一些。
#5
确实是这样,刚才测试了一下,还是会有几秒种的卡顿,我自己想到了以前使用过My.Application.DoEvents(),一会再测试下,线程的方法我不太熟悉,不知道有什么例子程序没有?
#6
经测试,My.Application.DoEvents()无效果
#7
兄弟,提高自学能力,这是一个很简单的线程使用,我这边没有现成的例子,我去搜跟你搜一样,不过注意资源释放,以免内存递增。
#8
上面是一个方法,但难免还会有短暂的卡顿,你也可以选择线程解决,用线程解决这类问题的更多一些。
确实是这样,刚才测试了一下,还是会有几秒种的卡顿,我自己想到了以前使用过My.Application.DoEvents(),一会再测试下,线程的方法我不太熟悉,不知道有什么例子程序没有?
兄弟,提高自学能力,这是一个很简单的线程使用,我这边没有现成的例子,我去搜跟你搜一样,不过注意资源释放,以免内存递增。
正在搜了,我的自学能力很高了,我不是做计算机的,我编程是业余自学的,只是时间不多,想上来问问少走弯路。也想吐槽一下vb.net 入门的书太多,没有一本实用……
#9
我希望大家有能力帮到别人的话,就帮帮忙吧。
我最近学习了System.Timers.Timer,用这个解决了问题,也学习了很多东西,特高兴,简单描述一下,希望对后来者有用:
用代码生成System.Timers.Timer,它将与Form不在同一线程上运行,于是用System.Timers.Timer去读取数据库并刷新Label的信息,不会卡界面。但是由于System.Timers.Timer相对于Form来说是另一线程的,调试的时候会不通过,不能访问Label,但直接运行程序是没有什么问题的。如果要解决的话,就要用 Label.Invoke(New MethodInvoker(AddressOf……) 去访问控件Label,这样调试就不会出错了,直接运行也没发现什么问题。
我最近学习了System.Timers.Timer,用这个解决了问题,也学习了很多东西,特高兴,简单描述一下,希望对后来者有用:
用代码生成System.Timers.Timer,它将与Form不在同一线程上运行,于是用System.Timers.Timer去读取数据库并刷新Label的信息,不会卡界面。但是由于System.Timers.Timer相对于Form来说是另一线程的,调试的时候会不通过,不能访问Label,但直接运行程序是没有什么问题的。如果要解决的话,就要用 Label.Invoke(New MethodInvoker(AddressOf……) 去访问控件Label,这样调试就不会出错了,直接运行也没发现什么问题。
#1
在连接字符串中写timeout,默认链接30秒,你可以改成3秒
这个不是command的timeout,链接的timeout只能写在连接字符串中
这个不是command的timeout,链接的timeout只能写在连接字符串中
#2
在连接字符串中写timeout,默认链接30秒,你可以改成3秒
这个不是command的timeout,链接的timeout只能写在连接字符串中
是这样子吗?
SqlConnection conn = new SqlConnection(" Uid=sa;Pwd=***;Initial Catalog=Northwind;Data Source=LocalHost;Connect Timeout=900")
那个timeout的单位是秒吗?
#3
应该是的,你查下呢
#4
上面是一个方法,但难免还会有短暂的卡顿,你也可以选择线程解决,用线程解决这类问题的更多一些。
#5
上面是一个方法,但难免还会有短暂的卡顿,你也可以选择线程解决,用线程解决这类问题的更多一些。
确实是这样,刚才测试了一下,还是会有几秒种的卡顿,我自己想到了以前使用过My.Application.DoEvents(),一会再测试下,线程的方法我不太熟悉,不知道有什么例子程序没有?
#6
经测试,My.Application.DoEvents()无效果
#7
上面是一个方法,但难免还会有短暂的卡顿,你也可以选择线程解决,用线程解决这类问题的更多一些。
确实是这样,刚才测试了一下,还是会有几秒种的卡顿,我自己想到了以前使用过My.Application.DoEvents(),一会再测试下,线程的方法我不太熟悉,不知道有什么例子程序没有?
兄弟,提高自学能力,这是一个很简单的线程使用,我这边没有现成的例子,我去搜跟你搜一样,不过注意资源释放,以免内存递增。
#8
上面是一个方法,但难免还会有短暂的卡顿,你也可以选择线程解决,用线程解决这类问题的更多一些。
确实是这样,刚才测试了一下,还是会有几秒种的卡顿,我自己想到了以前使用过My.Application.DoEvents(),一会再测试下,线程的方法我不太熟悉,不知道有什么例子程序没有?
兄弟,提高自学能力,这是一个很简单的线程使用,我这边没有现成的例子,我去搜跟你搜一样,不过注意资源释放,以免内存递增。
正在搜了,我的自学能力很高了,我不是做计算机的,我编程是业余自学的,只是时间不多,想上来问问少走弯路。也想吐槽一下vb.net 入门的书太多,没有一本实用……
#9
我希望大家有能力帮到别人的话,就帮帮忙吧。
我最近学习了System.Timers.Timer,用这个解决了问题,也学习了很多东西,特高兴,简单描述一下,希望对后来者有用:
用代码生成System.Timers.Timer,它将与Form不在同一线程上运行,于是用System.Timers.Timer去读取数据库并刷新Label的信息,不会卡界面。但是由于System.Timers.Timer相对于Form来说是另一线程的,调试的时候会不通过,不能访问Label,但直接运行程序是没有什么问题的。如果要解决的话,就要用 Label.Invoke(New MethodInvoker(AddressOf……) 去访问控件Label,这样调试就不会出错了,直接运行也没发现什么问题。
我最近学习了System.Timers.Timer,用这个解决了问题,也学习了很多东西,特高兴,简单描述一下,希望对后来者有用:
用代码生成System.Timers.Timer,它将与Form不在同一线程上运行,于是用System.Timers.Timer去读取数据库并刷新Label的信息,不会卡界面。但是由于System.Timers.Timer相对于Form来说是另一线程的,调试的时候会不通过,不能访问Label,但直接运行程序是没有什么问题的。如果要解决的话,就要用 Label.Invoke(New MethodInvoker(AddressOf……) 去访问控件Label,这样调试就不会出错了,直接运行也没发现什么问题。