vb点虐 线程挂起 vbnet线程池

vb点虐 串口关闭时挂起

我处理这个问题的大概过程,当程序响应DataReceived时:

创新互联建站是一家集网站建设,东洲企业网站建设,东洲品牌网站建设,网站定制,东洲网站建设报价,网络营销,网络优化,东洲网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

Private Sub MyCOMM_DataReceived(ByVal sender As Object, ByVal e As 

System.IO.Ports.SerialDataReceivedEventArgs) Handles MyCOMM.DataReceived

If IsClosing Then Exit Sub '如果界面正在关闭串口则退出过程

Try

IsListenning = True'设置正在读取标记,供界面操作判断

Wait(150)'等待150毫秒

Dim n As Long = MyCOMM.BytesToRead

Dim buf(n - 1) As Byte

Try

MyCOMM.Read(buf, 0, n)

Catch ex As Exception

MsgBox("接收短信出错", "COMPort.DataReceived")

Throw New System.Exception(ex.Message)

Finally

IsListenning = False'无论接收数据成功与否,都关闭正在读取标记

End Try

MyCOMM.Close()

MyCOMM.Open()

'Do SomeThing

Catch ex As Exception

MyCOMM.Close()

MyCOMM.Open()

End Try

End Sub

Protected Sub Wait(ByVal miliseconds As Integer)

Dim tmpNow As Date = Now

While Now.Subtract(tmpNow).Milliseconds  miliseconds

Application.DoEvents()

End While

End Sub

希望能帮的上忙

VB点虐 多线程编程问题

你可以在timer前用if判断网络状态,

如断开,可用

threading.Thread.Sleep(10000) ‘当前线程挂起10秒

’可以开一个新线程去读取脱机数据。

如连接,则继续执行。

补充:

dim i as integer

'超过100次退出,避免死循环

for i=0 to 100

try

'ping你的端口

if ‘ok

exit for

else

threading.Thread.Sleep(10000) ‘当前线程挂起10秒

end

Catch ex As Exception

End Try

next

VB点虐 多线程,导致无法响应

t.Suspend() 这个是挂起线程。是一个异步方法。

t.Sleep 我看了是一个同步方法。要等这个方法运行完了才继续下一步。

这和from.show和 from.showdiaglog区别差不多!

至于疑问2我也没找到原因。

求大神指导VB点虐 线程 ThreadState 的使用方法 怎么获取线程状态,是否被挂起堵塞停止等等

用time控件啊,获取threadstate后,按指定时间间隔规定向界面刷新,线程必须是全局变量

用一个有退出条件的无限循环的sub也行。

线程开始就触发该过程,用无限循环来刷新状态,线程完成即退出无限循环。局部变量的线程也可以用这种方式。

不过用法要正确,否则会出问题。


文章名称:vb点虐 线程挂起 vbnet线程池
文章源于:http://abwzjs.com/article/ddjpehd.html