System.Threading.Timer线程的问题

youyiyang youyiyang 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
各位好,
我在做一个串口调试工具的时候,需要用到System.Threading.Timer,并且也能够通过下面代码定时发送串口数据包,

Dim autoEvent As New AutoResetEvent(False)
Dim SendingPacket1 As New SendingPacket(10)
Dim i As Long
i = 0
Dim temp As String()
Dim dueTime As Integer
loadInterval()
ThreadItem1 = New System.Threading.Timer(New TimerCallback(AddressOf SimControllSending), autoEvent, 0, 0)
While i <= zzz
autoEvent.WaitOne(999999999, False)
temp = Split(Interval(i), "|")
dueTime = temp(0).Trim()
ThreadItem1.Change(dueTime, 0)
Console.WriteLine("i=" & i & ", " & Interval(i) & "ms")
Console.WriteLine(vbCrLf & "Changing period." & vbCrLf)
i += 1
End While
ThreadItem1.Dispose()
Interval = Nothing
Console.WriteLine(vbCrLf & "Destroying timer.")

现在需要在定时发串口数据包的时候,将这些报文记录到DataGridView上面。
现在做的是,我开了两个SerialPort,分别对应RS232和RS232_2, RS232上定时发包,RS232_2上接收。由于System.Threading.Timer定时器是在后台的线程工作的,所以RS232_2的线程需要和System.Threading.Timer,定时器的线程是一个的,否则会出现等RS232全部发送完毕后,RS232_2才接收所有的这些报文。而定时器的作用是每次发包的时间间隔是不同的,这样RS232_2上不能及时将这些间隔实时的记录到DataGridView上,而是要等这个线程结束后,在DataGridView上才一股脑的看到这些报文。
所以想请教哪位能指教一下,怎么将RS232_2的线程和System.Threading.Timer定时器的线程相一致?
或者是其他什么办法?

:)
...全文
评论 12
收藏 已收藏
分享
返回顶部
youyiyang
VB 16,718 成员 110,520 内容