以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  终止进程报错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=190572)

--  作者:puma
--  发布时间:2024/2/23 13:37:00
--  终止进程报错
需求:在窗口里添加了一个按钮 循环执行,  现在需要终止这个循环。 
方法:通过弹窗后,用公共变量终止循环。
或者有什么方法,解决窗口假死问题?


Dim t0 As Threading.Thread
t0=New Threading.Thread(Sub() Functions.Execute("打开窗口"))
t0.start()



通过
t0.Abort()
终止进行,有下面的报错
图片点击可在新窗口打开查看




\'打开窗口
Dim frm As WinForm.Form = Forms("终止窗口)
Dim frmHight As int32 = 100
Dim frmWidth As int32 = 400
Dim Top As Integer = screenHeight - frmHight-100
Dim Left As Integer = screenWidth - frmWidth -25
\'msgbox(Top & "   " & left)
frm.open(left,Top)
[此贴子已经被作者于2024/2/23 13:40:54编辑过]

--  作者:有点蓝
--  发布时间:2024/2/23 13:41:00
--  
不能在异步进程里使用Foxtable设计的窗口,也就是Foxtable设计的窗口只能同步在主线程里使用
--  作者:puma
--  发布时间:2024/2/23 13:42:00
--  
怎么解决窗口假死问题?
--  作者:puma
--  发布时间:2024/2/23 13:45:00
--  
或者,在怎么在窗口里做一个启动和终止的按钮?
如果没有终止,启动后程序运行时间很长(1个小时,甚至更长),怎么手动终止?

--  作者:有点蓝
--  发布时间:2024/2/23 13:46:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=184244
--  作者:有点蓝
--  发布时间:2024/2/23 13:52:00
--  
有些代码执行了是没有办法终止的。

一般是使用循环处理问题的时候才能终止,在循环体里判断。比如

vars(“停止”)=false
for  i as integer = 0 to 100
if vars(“停止”)=true exit for
其它费时的内容处理
Application.DoEvents
next

然后停止按钮
vars(“停止”)=true

不过要注意的是使用了Application.DoEvents之后循环的效率会慢上好多倍

--  作者:puma
--  发布时间:2024/2/23 16:32:00
--  
目前是通过弹窗,变更公共变量,可以正常终止。

就是程序运行完成后,这个弹窗不能自动关闭。(通过线程打开的,不然不能点击)
图片点击可在新窗口打开查看