System.Threading.Timer线程的问题
各位好,
我在做一个串口调试工具的时候,需要用到System.Threading.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定时器的线程相一致?
或者是其他什么办法?
:)
我在做一个串口调试工具的时候,需要用到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定时器的线程相一致?
或者是其他什么办法?
:)
...全文
相关推荐
C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析
由于此Timer在UI线程中运行,因此在Tick事件处理程序中可以直接修改UI元素,而无需担心跨线程访问问题。
.NET Framework中定时器timer的单线程与多线程使用讲解
多线程定时器通常有System.Threading.Timer和System.Timers.Timer。
C#中timer类的用法总结
**System.Timers.Timer**: - 类似于System.Threading.Timer,也是基于.NET线程池,具有较高的计时精度。
c# 区分几种定时器(timer)
**个人体会与常见问题解答**在实际使用中,System.Windows.Forms.Timer的一些常见问题包括:- Tick事件不会在新线程中执行,而是始终在主线程内。
C#三种定时器实现例子:Timer_Test.rar
System.Timers.Timer:这是一个多线程定时器,适合于后台处理和非UI应用。它在单独的线程上运行,避免了阻塞UI线程的问题。


