Foxtable(狐表)用户栏目专家坐堂 → 程序每隔一段时间自动假死


  共有6443人关注过本帖树形打印复制链接

主题:程序每隔一段时间自动假死

帅哥哟,离线,有人找我吗?
wuxianzuoji41
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:884 积分:7061 威望:0 精华:0 注册:2013/3/5 8:42:00
程序每隔一段时间自动假死  发帖心情 Post By:2013/10/18 15:23:00 [只看该作者]

窗口中timer加入了如下代码
ipa=Functions.Execute("GetNetIP")
If ipa<>ipb Then
Dim m As New MailSender
m.Host = "smtp.189.cn"
m.Account = "133100"
m.Password = "abc12345"
m.From = "1331100@189.cn"
m.AddReceiver("133800@189.cn")
m.AddReceiver("133100@189.cn")
m.Title = "ip" & Functions.Execute("GetNetIP")
m.C
m.SendAsync()
Else 
End If
ipb=ipa

就是自动吧IP变化发到指定邮件里。但是当执行这个程序的时候程序就无法操作其他程序了。可以单独弄一个线程处理这个吗,这个该怎么编写

[此贴子已经被作者于2013-10-18 15:25:32编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/10/18 15:25:00 [只看该作者]

不是有个ip变化就会触发的事件吗,你可以在这个事件写代码,不用定时执行的。

http://www.foxtable.com/help/topics/2710.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/18 15:26:00 [只看该作者]

SendAsync 就是异步发送了啊.

是不是你Functions.Execute("GetNetIP") 里面的操作太繁琐耗时了?

 回到顶部
帅哥哟,离线,有人找我吗?
wuxianzuoji41
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:884 积分:7061 威望:0 精华:0 注册:2013/3/5 8:42:00
  发帖心情 Post By:2013/10/18 15:28:00 [只看该作者]

狐狸爸爸这个可以检测外网IP变化吗,我是通过路尤器上网,我测试了好像不行。


 回到顶部
帅哥哟,离线,有人找我吗?
wuxianzuoji41
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:884 积分:7061 威望:0 精华:0 注册:2013/3/5 8:42:00
  发帖心情 Post By:2013/10/18 15:29:00 [只看该作者]

bin,我引用的是muhua的“狐表信息管理系统 ”里的那个GetNetIP函数,我登录时候也调用这个函数挺快的,但是放在TIMER里的时候大概要假死个20-40秒左右,又自动恢复正常

On Error Resume Next
Dim httpURL As New System.Uri("http://ip.qq.com/")
Dim httpReq As System.Net.HttpWebRequest = System.Net.WebRequest.Create(httpURL)
httpReq.Method = "GET"
Dim httpResp As System.Net.HttpWebResponse = httpReq.GetResponse()
httpReq.KeepAlive = False
Dim reader As New IO.StreamReader(httpResp.GetResponseStream, System.Text.Encoding.GetEncoding(-0))
Dim respHTML As String = reader.ReadToEnd()
With CreateObject("vbscript.regexp")
    .Global = True
    .MultiLine = True
    .ignorecase = True
    '.Pattern = ".*?\<.*?\>([^<>]+)[\s\S]*?"
    .Pattern = "当前的IP为.*?\<.*?\>([^<>]+)[\s\S]*?IP所在地为.*?\<.*?\>([^<>]+)"
    If .test(respHTML) Then
        With .Execute(respHTML)(0)
            Return Replace(.submatches(0), "&nbsp;", " ")
        End With
    End If
End With
Functions.Execute("GetNetIP")
bin 说的对,我自己也估计是这个函数时间比较长,有的时候,有什么好的解决方法吗
[此贴子已经被作者于2013-10-18 15:31:08编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/18 15:38:00 [只看该作者]

呵呵,这个是从网络获取的,网速有问题或者网站服务器慢的时候自然就会卡死了.无解!  当然你要使用多线程也是可以的,狐表用起来比较麻烦,我之前是搞C# 的.VB.net的多线程还不是很熟悉.

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/10/18 20:07:00 [只看该作者]

 获取的时候,还是挺快的说。代码放到计划任务那里,就是多线程了哦,不会假死的吧?

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/10/18 20:31:00 [只看该作者]

我的做法:增加一个全局变量,比如叫做:网络状态

 

NetworkAddressChanged事件代码:

 

Vars("网络状态") = TryConnectHost(www.jinyt.com)

 

BeforeLoadOuterTable事件代码:

 

If TryConnectHost("www.jinyt.com") = False Then
    e.Cancel = True
    MessageBox.show("对不起,当前网络或服务器不可用,请稍后再加载数据!")
End If

 

本事件代码,确保了在连接外部数据表的时候,如果网络不通,则暂时不连接,项目启动后,可以通过进入模块的代码再重新动态加载外部数据表,当服务器不可用时,继续忽略动作,不会链接。


【注】:本事件不能用全局变量,系统启动时全局变量还没有生成,会导致系统错误打不开。

 

BeforeSaveProject事件代码:

If Vars("网络状态") = False
    e.Cancel = True
    MessageBox.show("对不起,当前网络或服务器不可用,请稍后再保存数据!")
End If

 

这个事件的代码,保证了在保存项目之前,如果网络不通,将自动禁止不保存,也就不会报错了。

 

 

采用这种方法的优点:全局变量的值就是您想要知道的网络是否可用,您没有必要不断地采用定时器去检查服务器是否可用,因为那样做,是需要占用时间的,计划或窗口定时器过于繁重的代码或检测远程服务器是否可用,是会导致系统出现卡顿现象的!


 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/10/30 9:11:00 [只看该作者]

顶程老师。


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/30 9:23:00 [只看该作者]

好主意! 顶

 回到顶部
总数 11 1 2 下一页