定期检查网络通断并做相应处理的程序,运行后不能定期进行网络通断状况检查?

citylamp 2003-07-30 08:54:26
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
thread1 = New Threading.Thread(AddressOf MonitorThread)
thread1.Priority = Threading.ThreadPriority.Normal
' thread2 = New Threading.Thread(AddressOf Button_Click)
NetGood = True ’初使设置网络为通
thread1.Start() ‘开始监控线程
End Sub

Private Sub MonitorThread() ‘网络监控子函
Dim pingobj As New Project1.Class1
Do While True
thread1.Sleep(1000)
If pingobj.Ping(1000) = False Then ’pingobj.Ping是检查网络通断的子函
NetGood = False '如网络断,设置标志并暂停线程
thread1.Suspend()
Call RefreshNetConnection() ’刷新网络连接子函
Exit Sub
Else
NetGood = True ‘网络正常
thread1.Sleep(5000) ’五分钟后再进行网络检查
End If
Loop
End Sub
Sub RefreshNetConnection() ...略
...全文
47 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
citylamp 2003-08-01
  • 打赏
  • 举报
回复
up,请大家解答。
pipibug 2003-08-01
  • 打赏
  • 举报
回复
楼主结贴! 追加的问题已经和本贴的题目相去甚远,应该另外开贴问才对。

不要太省哟~
pipibug 2003-08-01
  • 打赏
  • 举报
回复
晕倒~

方法和线程的问题。
你的Thread1() 和 Thread2()是方法还是线程?

线程只有在执行了Thread.Start() 才会被创建,而不是调用方法Thread1()来创建的。
我估计你的情况是这样的:
你写了两个方法Thread1(), Thread2();然后又开了两个线程来执行这两个方法,分别为Thd1和Thd2来分别运行方法Thread1()和Thread2();
在Thd1和Thd2运行起来之后,你又在其他地方(比如主线程里)调用了方法Thread1()或者/和Thread2()。

在这种情况下面,后调用的方法不会创建新的线程。也和已经有的线程没有关系。他们在主线程中执行。

citylamp 2003-07-31
  • 打赏
  • 举报
回复
突然想起一个问题:假如thread1的构造函数是thread1(),thread2的构造函数是thread2()。那么如果主线程(即系统启动时的线程)运行中间调用了thread1()或thread2(),那不就可能有thread1()或thread2()的两个实例在运行了吗?--就是相当于运行了两个thread1或thread2了!我的想法对吗?怎么避免这种情况呢?
pipibug 2003-07-31
  • 打赏
  • 举报
回复
快乐王子说的对。 先suspend就不执行reconnect了。

不过像快乐王子说的那样,你就suspend不了thread1了. 而sleep对你的功能没什么用的。


解决方案:把thread1.suspend()移到RefreshNetConnection() 里开始的地方,然后在RefreshNetConnection() 结束前再加上thread1.resume()

pipibug 2003-07-31
  • 打赏
  • 举报
回复
把Dim pingobj As New Project1.Class1 放到线程外。
citylamp 2003-07-31
  • 打赏
  • 举报
回复
up
panyee 2003-07-30
  • 打赏
  • 举报
回复
好像是这样, suspend()把进程挂起了
Montaque 2003-07-30
  • 打赏
  • 举报
回复
代码有问题。
NetGood = False '如网络断,设置标志并暂停线程
thread1.Suspend()
Call RefreshNetConnection() ’刷新网络连接子函
Exit Sub
改为
NetGood = False '如网络断,设置标志并暂停线程
Thread.Sleep(500)
Call RefreshNetConnection() ’刷新网络连接子函

panyee 2003-07-30
  • 打赏
  • 举报
回复
up
为何不行?

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧