以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127499)

--  作者:huangxueyao
--  发布时间:2018/11/15 14:02:00
--  在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级
啥意思,何解?
--  作者:xndd
--  发布时间:2018/11/15 14:03:00
--  
不能用线程再去引用或者创建第二个线程,他们是平级的
--  作者:有点甜
--  发布时间:2018/11/15 15:09:00
--  

对应代码贴出来看看。

 

http://www.foxtable.com/mobilehelp/scr/3273.htm

 

http://www.foxtable.com/mobilehelp/scr/3272.htm

 


--  作者:huangxueyao
--  发布时间:2018/11/15 16:21:00
--  
计划任务A:

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20181115161740.png
图片点击可在新窗口打开查看


代码:

Try
    
    Dim tdd As Date = Date.Today
    Dim tdt As Date = Date.now
    Dim Arys  As List(Of String())
    
    Dim cmd As new sqlcommand
    cmd.connectionname = gs_strActiveConn
    cmd.commandtext = "sel ect * from 任务计划 where 执行 = 0 or 执行 is null"  \'如果已经任务设置中已经暂停,那么计划中尚未执行的任务也不再执行.
    Dim db As DataTable = cmd.executereader(True)
    
    Arys  = db.GetValues("任务ID|任务名称|任务函数","计划日期 = # " & tdd & " # and 计划时间 <= # " & tdt & " #")
    If Arys.Count > 0 Then
        Output.Logs("AutoLog").Add("自动数据处理开始" & Now.ToString("yyyy-MM-dd HH:mm:ss.fffff"))
        For Each Ary As String() In Arys
            Output.Show(Ary(0) & "|" & Ary(1) & "|" & Ary(2))
            Dim rwid As Integer = Ary(0)
            Dim rwmc As String = Ary(1)
            Dim rwhs As String = Ary(2)
            Dim hscs As String = rwhs & "," & rwid & "," & rwmc
            Output.Logs("AutoLog").Add("自动数据处理"  & hscs & "开始:"   & Now.ToString("yyyy-MM-dd HH:mm:ss.fffff"))
            \'CallFun_Thread(hscs)
            Functions.AsyncExecute(rwhs,rwid,rwmc) \'多线程
            Threading.Thread.Sleep(3000) \'必要时须延时一些
            Dim filter As String ="任务ID = " & rwid & " And 计划时间 <= #" & tdt  & "# "
            db.ReplaceFor("执行",True,filter)
            db.ReplaceFor("执行时间",Date.now,filter)
            db.save
            Output.Logs("AutoLog").Add("自动数据处理"  & hscs & "结束:"   & Now.ToString("yyyy-MM-dd HH:mm:ss.fffff"))
        Next
        Output.Logs("AutoLog").Add("----------------------------------")
        Output.Logs("AutoLog").Save(ProjectPath & "AutoLog.txt",True)
    End If
Catch ex As Exception
    Output.Logs("AutoLog").Add("----------------------------------")
    Output.Logs("AutoLog").Add("自动数据处理"  & ex.Message & "报错:"   & Now.ToString("yyyy-MM-dd HH:mm:ss.fffff"))
    Output.Logs("AutoLog").Save(ProjectPath & "AutoLog.txt",True)
End Try


上图红色部分调用的子函数代码如下:

以下内容是专门发给有点甜浏览



--  作者:有点甜
--  发布时间:2018/11/15 21:00:00
--  

1、涉及到公共资源的访问(比如表数据),基本是不能用多线程多次执行的。

 

2、必须按照顺序一步一步执行才行。也就是说启动一个线程,在这个线程里面完成所有的操作。


--  作者:telek
--  发布时间:2018/11/15 23:16:00
--  
gg
--  作者:atiwhl5
--  发布时间:2020/2/17 4:50:00
--  
我也碰到不知道怎么办


--  作者:Hopenight
--  发布时间:2020/5/12 13:42:00
--  
我也遇到了这个问题