vb.net我开了300个线程界面就死了,线程也不动了 中间我用Me.Invoke没看懂你的语言,你需要的seta过程,是只有一句sleep?还是当只有一个sleep时,不会卡死?而加上后面的语句就出现问题?
这里贴出来的是全部代码吗?
vb.net中如何结束一个线程vb.net中如何结束一个线程
一般而言,如果您想终止一个线程,您可以使用System.Threading.Thread类的Abort方法. 例如:
Dim worker As ThreadStart = New ThreadStart(AddressOf workerthreadmethod)
Dim t As Thread = New Thread(worker)
t.Start()
MessageBox.Show("Wait for a while for the thread to start.")
MessageBox.Show(t.ThreadState.ToString())
t.Abort()
MessageBox.Show(t.ThreadState.ToString())
t.Join()
MessageBox.Show(t.ThreadState.ToString())
当然,在调用Abort方法后,线程并不是立刻终止,要等线程的所有finally快中的代码完成后才会完全终止. 所以在主线程中可以用Join方法来同步,当线程还未完全终止时,t.Join()将处于等待,直到t线程完全结束后再继续执行后面的语句 。
Abort方法是会导致线程跳出一个异常错误的,你需要在代码中捕获该异常 。下面是一个比较完整的VB.NET线程例子:
Imports System
Imports System.Threading
Public Class MyTestApp
Public Shared Sub Main()
Dim t As New Thread(New ThreadStart(AddressOf MyThreadMethod))
'Start the thread
t.Start()
MsgBox("Are you ready to kill the thread?")
'Kill the child thread and this will cause the thread raise an exception
t.Abort()
' Wait for the thread to exit
t.Join()
MsgBox("The secondary thread has terminated.")
End Sub
Shared Sub MyThreadMethod()
Dim i As Integer
Try
【vb.net线程停顿 vb6 线程】Do While True
Thread.CurrentThread.Sleep(1000)
Console.WriteLine("This is the secondary thread running.")
Loop
Catch e As ThreadAbortException
MsgBox("This thread is going to be terminated by the Abort method in the Main function")
End Try
End Sub
End Class
Thread.Abort()方法用来永久销毁一个线程,而且将抛出ThreadAbortException异常 。使终结的线程可以捕获到异常但是很难控制恢复,仅有的办法是调用Thread.ResetAbort()来取消刚才的调用 , 而且只有当这个异常是由于被调用线程引起的异常 。因此,A线程可以正确的使用Thread.Abort()方法作用于B线程 , 但是B线程却不能调用Thread.ResetAbort()来取消Thread.Abort()操作 。
vb 。net 缓两秒执行一段程序可以利用Timer时钟控件实现,这样做的好处是无需等待,释放CPU时间去做别的事
vb.net 中我现实现,线程的暂停与开始!请教高手一下!请留下你的联系方式!在你给textbox设置text值后直接使用sleep() , 因为在使用sleep()的时候,当前的主进程是被挂起了,也就是说设置的text属性后,还来不及在屏幕上显示lbi的内容就执行了sleep,所以在执行sleep()挂起主进程前 , 你必须让textbox的内容先显示出来再执行sleep,可尝试使用下DoEvents()将控制权暂时移交一下,让系统有时机来刷新textbox里面的内容,让系统有机会来刷新textbox里面的内容 。由于我没有安装visual studio的开发环境,无法调试代码的正确性 , 但我记得我以前也遇到此类问题,采取的DoEvents()的方式 。你可尝试下 。
lbl.Visible = True
Sleep(5000)
lbl.Text = "我是中国人"
lbi.Refresh '刷新一下lbi,具体你可以调试下,看需要不需要这条
Application.DoEvents() ‘设置完lbi的text属性,将操作权限释放一下,让系统有机会显示lbi的内容 。
Sleep(3000) ’待显示后,再执行挂起
lbl.Text = "我爱自己的祖国"
lbi.Refresh ‘同上
Application.DoEvents() ’同上
DoEvents()的功能解释是:转让控制权 , 以便让操作系统处理其它的事件 。
如执行一次不行,可尝试重复多执行几次,特别在循环语句中,对于窗口的刷新显示DoEvents特别有用 , 但是在循环体内使用了DoEvents后 , 当前进程的执行效率会有大幅降低,因为移交控制权必然损失当前进程的运行效率 。
vb.net多线程,循环导致窗口界面假死的问题同学 。。你这里的写法其实根本没有用到多线程
原因很简单
你是定义了一个T的新线程,但是很可惜你在BeginDoSub这个独立的线程中又定义了一个deSomeSub的委托 , 并且直接用Me.Invoke把实际的执行任务提交给界面主线程运行了
所以你的图片的处理函数实际上是在主线程中运行的,新线程等于没用
正确的作法是,T定义为SomeSub这个函数为入口的线程 , 并启动它
在界面进度条更改的时候再使用Invoke来调用委托来进行界面更改 。
自己再好好看看吧,时间问题我要走了 。
vb.net 多线程卡死界面,新手求前辈们帮助,感谢“卡死”是一个非常主观vb.net线程停顿的描述vb.net线程停顿 , 如果你要让主线程杀掉卡死的线程vb.net线程停顿,那么你必须给“卡死”做出准确的定义 。
什么是卡死vb.net线程停顿?30秒没有响应就是卡死?那么“没有响应”的定义又是什么?
你给出这些条件以后 , 杀掉一个线程就不难 。Abort方法,Dispose方法,都可以 。
vb.net线程停顿的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vb6 线程、vb.net线程停顿的信息别忘了在本站进行查找喔 。
推荐阅读
- 为什么电视看不了课件直播,电视为什么不能看电视直播
- erp系统采购订单单价不为零,erp系统订单与物料
- 拍摄瀑布音乐叫什么,配瀑布的纯音乐
- c语言标签函数名 c语言标签后面的语句执行吗
- gis配准后的地图名称,gis配准后的地图名称是什么
- 一款叫太平洋的即时战略游戏,太平洋战争的策略游戏
- linux操作命令实验一,linux基本操作命令实验报告
- python委托函数 python自带函数
- cssradio颜色,css颜色写法