以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]UI线程的问题。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192859)

--  作者:54292550
--  发布时间:2024/7/27 11:13:00
--  [求助]UI线程的问题。

Forms("主窗口").Controls("ListBox1").items.add(Date.Now & "     " & "日志123456789")

Forms("主窗口").Controls("ListBox1").SelectedIndex = Forms("主窗口").Controls("ListBox1").Items.Count - 1

Forms("主窗口").Controls("ListBox1").SelectedIndex = -1


我将这个代码写入到程序的各个部分,有计时器的,有其它线程的,用于在主窗口listbox里面显示软件工作日志,但是偶发性的总是会出现找不到主窗口这样的报错,是不是和UI线程有关系?怎样修改一下代码能解决这个找不到窗口的报错?


--  作者:有点蓝
--  发布时间:2024/7/27 11:24:00
--  
首先,"主窗口"必须属于打开状态。窗口关闭后是无法使用里面的控件的

其次,不知道‘其它线程’是怎么处理的,如果是指异步函数,肯定是不能使用窗口和控件的


--  作者:54292550
--  发布时间:2024/7/27 11:52:00
--  
主窗口始终处于打开状态,属于软件的主界面,这个报错并不是次次出现,偶尔才会出现。是会在异步函数中调用,但有时候就没事,有时候就报找不到窗口。因为打日志信息存在于程序任何位置,怎么才能解决这个问题?在打日志时候我加入一个if判断,窗口是否打开,就算这样,也会报找不到窗口。
--  作者:有点蓝
--  发布时间:2024/7/27 11:55:00
--  
异步函数不能直接使用窗口和控件的:http://www.foxtable.com/mobilehelp/topics/277.htm

必须通过同步函数调用:http://www.foxtable.com/mobilehelp/topics/3274.htm