以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 在定时器TimeTick事件执行的自定义函数的网页代码,狐表来说是属于异步执行吗,需要添加e.Handel =true吗 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=124815) |
-- 作者:chen37280600 -- 发布时间:2018/9/14 10:17:00 -- 在定时器TimeTick事件执行的自定义函数的网页代码,狐表来说是属于异步执行吗,需要添加e.Handel =true吗 在HttpClient的异步编程里,写了
“我们并不能简单地将HttpRequest事件中的代码转移到自定义函数中,然后在HttpRequest事件中用异步方式调用此函数就完事,因为默认主线程执行完毕,系统就会关闭和客户端的信道,客户端不会显示任何内容,同时因为信道已经关闭,异步函数向客户端发送信息的时候会出错”
Dim e As RequestEventArgs = args(0)
我现在在定时器里增加一个每天晚上8点HttpClient发送json推送到用户的企业微信里,但是会发现出错,如果单纯执行代码就没错,但是在定制器8点的时候,会收到报错。好像是什么通讯突然中断,已关闭之类的 。我敢肯定是定制器里执行的代码报错。因为太准时了,8点0分0秒。连续测试过2天,都会这样!
1定时器里TimeTick的代码 Dim tc As WinForm.TextBox = e.Form.Controls("TextBox_CorpID")
2自定义函数“AutoSendWhour”的代码: Dim drs As List(of DataRow)= DataTables("MHuserInfo").SQLSe lect("WXUserID is not null and MHUserName in (se lect distinct WhourApproveUser from WhourInfo where WhourStatus =1)") For Each dr As DataRow In drs Dim s As String = dr("WxUserID")
是不是TimeTick执行的关于httpclient事件里,也要添加e.handle =true ,防止信道关闭? [此贴子已经被作者于2018/10/30 10:04:56编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/9/14 10:47:00 -- 1、你的代码那里,是7点的时候推送的
If d1 <> Date.today AndAlso Date.Now.Hour = 19 AndAlso Date.Now.Minute = 0 Then
2、执行time人tick的代码那里,把信息也记录一下,确定是不是确实timertick有问题
3、执行函数之后(你不是异步执行的),如果额外有一些请求进来,就要排队等候的,你尝试异步调用函数 http://www.foxtable.com/mobilehelp/scr/3269.htm
|
-- 作者:chen37280600 -- 发布时间:2018/9/14 10:50:00 -- 那个是8点的,我今天特意改成7点,今晚再看看。基本也确定是这个timetick搞出来的
我这个不算是异步执行把?跟异步的帮助文档无关,是吧? [此贴子已经被作者于2018/9/14 11:10:31编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/9/14 11:36:00 -- 以下是引用chen37280600在2018/9/14 10:50:00的发言:
那个是8点的,我今天特意改成7点,今晚再看看。基本也确定是这个timetick搞出来的
我这个不算是异步执行把?跟异步的帮助文档无关,是吧? [此贴子已经被作者于2018/9/14 11:10:31编辑过]
执行timertick事件的代码以后(你这个不是异步),其余代码无法执行的,需要等待。有可能是那个时候有新的访问进来无法及时响应导致的报错。 |
-- 作者:chen37280600 -- 发布时间:2018/9/14 12:04:00 -- timetick不是多线程的吗?应该不会影响主线程的事情把? |
-- 作者:有点甜 -- 发布时间:2018/9/14 12:11:00 -- 以下是引用chen37280600在2018/9/14 12:04:00的发言:
timetick不是多线程的吗?应该不会影响主线程的事情把?
不是 |
-- 作者:chen37280600 -- 发布时间:2018/9/16 9:45:00 -- 14和15号都报错了,我设置8点执行,2个晚上,都是同样时间的报错,肯定是timetick的问题
2018-09-15 20:00:31.9018 2018-09-15 20:00:31.9018 |
-- 作者:有点甜 -- 发布时间:2018/9/16 10:43:00 -- 1、请改成异步函数的方式调用
http://www.foxtable.com/mobilehelp/scr/3269.htm
2、单独测试这段代码,或者你调整时钟重复模拟执行这段代码看是否报错
3、看你返回的提示,是你访问后返回的数据为空白,弹出每次返回的数据看看
Dim str = hc.GetData msgbox(str) |
-- 作者:chen37280600 -- 发布时间:2018/9/17 10:58:00 -- 我想问下,timetick不是异步多线程的吗?我记得之前论坛里有人分享,通过timetick来实现了多线程统计查询。
那timetick实际是主线程的?自是多了一个定时运行的功能? |
-- 作者:有点甜 -- 发布时间:2018/9/17 11:03:00 -- 照着做一下啊
1、单独测试这段代码,调整你的时钟重复模拟执行这段代码看是否报错啊
2、看你返回的提示,是你访问后返回的数据为空白,弹出每次返回的数据看看
Dim str = hc.GetData msgbox(str) |