以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]子线程销毁 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=185417) |
|
-- 作者:kb9702 -- 发布时间:2023/2/21 19:16:00 -- [求助]子线程销毁
|
|
-- 作者:有点蓝 -- 发布时间:2023/2/21 19:56:00 -- 全局代码使用public定义变量 public ArtSubThread As System.Threading.Thread
|
|
-- 作者:kb9702 -- 发布时间:2023/2/21 20:15:00 -- 忘记全局代码要用Public了。。 还有一个想问下 为什么退出按钮设置了这个会卡住,窗口不会关闭,卡住了。 退出按钮代码如下: 以下内容为程序代码: 1 ARTLogic = 2 2 Threading.Thread.Sleep(10) 3 e.Form.TimerEnabled = False 4 Threading.Thread.Sleep(10) 5 ArtSubThread.Join() 6 Threading.Thread.Sleep(10) 7 e.Form.Close() 如果退出代码如下: 以下内容为程序代码: 1 ARTLogic = 2 2 Threading.Thread.Sleep(10) 3 e.Form.TimerEnabled = False 4 Threading.Thread.Sleep(10) 5 ArtSubThread.Join() 点了退出后在手动关闭下窗口就可以了。
|
|
-- 作者:有点蓝 -- 发布时间:2023/2/21 20:40:00 -- 麻烦下次发代码不要发这种有行号的代码。 试试 1 ARTLogic = 2
2 Threading.Thread.Sleep(10) 3 e.Form.TimerEnabled = False 4 Threading.Thread.Sleep(10) 7 e.Form.Close() 5 ArtSubThread.Join() |
|
-- 作者:kb9702 -- 发布时间:2023/2/21 20:49:00 -- 不行还是会卡住 e.Form.TimerEnabled = False Threading.Thread.Sleep(10) If ArtSubThread.IsAlive = True Then ARTLogic = 2 MessageBox.Show("终止线程") ArtSubThread.Join() Threading.Thread.Sleep(1000) e.Form.Controls("Exit1").PerformClick() Else MessageBox.Show("线程") End If 退出按钮用这个代码的时候,会先弹出终止线程这个提示,之后又弹出线程这个提示 有行号的代码是使用论坛窗口上面的插入代码功能自动带出来。。。 |
|
-- 作者:有点蓝 -- 发布时间:2023/2/21 20:54:00 -- 退出按钮 e.Form.TimerEnabled = False e.Form.close 窗口afterclose事件 If ArtSubThread.IsAlive = True Then ARTLogic = 2 ArtSubThread.Join() End If |
|
-- 作者:kb9702 -- 发布时间:2023/2/21 21:03:00 -- 用了还是不行,反而出现线程没有终止直接退出后那种程序崩溃后的错误。 现在用了两个按钮,一个停止,停止点了之后出现退出按钮,然后点退出这种方式。
|
|
-- 作者:有点蓝 -- 发布时间:2023/2/21 21:07:00 -- 那就这样吧。我这边也没法测试。 或者试试使用Foxtable提供的异步函数
|
|
-- 作者:kb9702 -- 发布时间:2023/2/21 21:10:00 -- 是用异步函数来关闭窗口吗? |
|
-- 作者:有点蓝 -- 发布时间:2023/2/21 21:24:00 -- 用异步函数替代上面的线程 |