当前位置:编程学习 > C#/ASP.NET >>

奇怪的问题。请高手看看。

我用vb.net写了一个广告程序:运行本程序时读取SQL Server上的广告内容,然后显示在适合的时间出来,如果不能联接SQL Server则显示内置的广告信息。

单机调试通过,所有功能正常。


我把这个软件大量布署到学校机房,并将加入到启动菜单里。当机房电脑启动时,自动运行本程序,并重启所有电脑,现像:

如果机房能连接SQL Server的(能接连接互联网):本软件就会产生错误(提示发送信息到微软...)软件也自动关闭。如果此时再手动运行本广告程序,却又能完全正常工作。 

 如果机房被断网了(即不能连接到SQL Server),本软件没有任何问题。 


我的考虑:是不是机房的电脑同时启动,所有电脑(80台左右)同时访问Sql Server时,由于Sql太忙,而引起本软件出错。我偿试了一台电脑重启后,还是要发生错误。因此排队这个问题。

搞不懂:1) 为什么开机时自动启动本程序时在联网状态才出错。如果不联网就不出错。 
        2) 为什么启动后,如果手工运行本程序,就能完全正常?

--------------------编程问答-------------------- 系统没有准备好,延迟启动试试。 --------------------编程问答--------------------
引用 1 楼 jdcxf 的回复:
系统没有准备好,延迟启动试试。


如何延迟启动?  

但为何在没有联网状态下的时候,不会发生错误呢? --------------------编程问答-------------------- 不知道什么问题,但你可以试下这:在程序启动后,延迟一定时间再去连接数据库.这个可以在程序中控制. --------------------编程问答-------------------- 恩,你多试试,应该就可以了 --------------------编程问答-------------------- 电脑开机后,有一段网络链接的时间,而你的程序在一分钟之内绝对会运行且进行SQL链接;
1、建议在开机后等待2分钟再运行程序,看看是不是网络链接的问题;
2、在程序中加些提示信息,看看在哪一步被关闭。(在程序过程中可以msgbox 或者 写到将信息写到本地文件等方法; --------------------编程问答-------------------- 在Windows还没有完全完成启动过程时就启动了,在制作自动启动时会经常遇到这个现象.解决办法通常是延迟.比如在load中弄个大循环,使界面显示速度变慢.当然,这个错误主要就是显示界面时出现的. --------------------编程问答--------------------
引用 6 楼 dylike 的回复:
在Windows还没有完全完成启动过程时就启动了,在制作自动启动时会经常遇到这个现象.解决办法通常是延迟.比如在load中弄个大循环,使界面显示速度变慢.当然,这个错误主要就是显示界面时出现的.


有没有搞错,要用个大循环?直接用Thread.Sleep不可以吗?

再者,楼主的这个问题现在并不能肯定就是系统没有准备好,最好还是调试一下,检查是什么原因报错。

即5楼说的:在程序中加些提示信息,看看在哪一步被关闭。(在程序过程中可以msgbox 或者 写到将信息写到本地文件等方法; --------------------编程问答-------------------- 或者直接在程序的Load处加上一个Msgbox或者Messagebox,内容为欢迎使用就可以了。这样也就不需要延时启动了。 --------------------编程问答-------------------- 加到系统的任务计划里面,启动时,设个延迟时间。给系统足够的时间准备好所有服务。 --------------------编程问答--------------------
引用 7 楼 robake 的回复:
引用 6 楼 dylike 的回复:
在Windows还没有完全完成启动过程时就启动了,在制作自动启动时会经常遇到这个现象.解决办法通常是延迟.比如在load中弄个大循环,使界面显示速度变慢.当然,这个错误主要就是显示界面时出现的.


有没有搞错,要用个大循环?直接用Thread.Sleep不可以吗?

再者,楼主的这个问题现在并不能肯定就是系统没有准备好,最好还是调试一下,检查是什……



仔细检查 --------------------编程问答-------------------- 从几个方面确认:
1.是否是因为将程序加入启动内,导致读取路径或者配置文件时发生了错误
2.如果是数据库连接出错,是否有相应的异常捕获代码,如果有,可以提示处MsgBox
3.如果不是以上两个原因,可以考虑是否是因为同一时间访问的机器太多,试验只启动几台的时候是否也有这个问题
4.看看是否是因为网络还没有连接上,可以在连数据库前先ping一下数据库服务器 --------------------编程问答-------------------- 可以在程序里加入延时,估计电脑刚启动,有些后台的网络服务还为完全准备就绪


Threading.Thread.Sleep(1000)'(单位:毫秒)1秒=1000毫秒

--------------------编程问答-------------------- 本人以前也用过,加入延时程序即可以
--------------------编程问答-------------------- 是我的代码出了问题:
 Dim ic As New System.Drawing.Icon(My.Computer.FileSystem.CurrentDirectory & "\工程3.ico")
在电脑启动时,My.Computer.FileSystem.CurrentDirectory 的路径是:我的文档。

改为:
 Dim ic As New System.Drawing.Icon(Application.StartupPath & "\工程3.ico")
就正常了。


但又出来一个问题:
发现运行我这个软件后,点开始-->重新启动(或关机) 电脑没反应。如果把我的程序给结束后,就一切正常,向高手请教是何原因。
--------------------编程问答--------------------
引用 14 楼 lirenedu 的回复:
是我的代码出了问题:
 Dim ic As New System.Drawing.Icon(My.Computer.FileSystem.CurrentDirectory & "\工程3.ico")
在电脑启动时,My.Computer.FileSystem.CurrentDirectory 的路径是:我的文档。

改为:
 Dim ic As New System.Drawi……


电脑关机时要先发送关闭应用程序的信息,等到程序关闭后再关闭计算机。在注册表可以设置不等待响应直接关机。 --------------------编程问答--------------------
引用 15 楼 pingker 的回复:
引用 14 楼 lirenedu 的回复:
电脑关机时要先发送关闭应用程序的信息,等到程序关闭后再关闭计算机。在注册表可以设置不等待响应直接关机。
 ……


我认为应该在自己的程序中找问题...
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,