我再一次需要你的帮助。我在vb .net中编程,但是c#中的一个想法也受到欢迎。我有两个mdi表格。一个是使用directx绘制一个多维数据集,另一个是有一个我想要附加文本的richtextbox。两个mdi表单的数据来自serialport,所以为了使串口线程更轻,我在终端形式中添加了一个列表(字符串),所以串行读取的唯一工作就是抛出数据。我已经在终端形式中设置了一个计时器到间隔100,其中tick事件我得到列表的所有行(字符串)并将它们附加到richtextbox。一切正常,直到我制作directx表格,然后终端表格暂停并且什么都不做。从我能看到的事件没有被触发。那为什么会这样呢?我开始认为.NET中的计时器类通过检查应用程序执行事件来触发tick事件,当它处于空闲状态时它会触发它。我是对的吗?
绘图代码:
Private Sub childForm_Paint(ByVal sender As Object, ByVal e As Windows.Forms.PaintEventArgs)
Dim DataXYZ_Acc_index As Integer = DataXYZ_Acc.Count - 1
Dim DataXYZ_Gyr_index As Integer = DataXYZ_Gyr.Count - 1
device.Clear(ClearFlags.Target Or ClearFlags.ZBuffer, Color.Black, 1.0F, 0.0F)
device.BeginScene()
If DataXYZ_Gyr_index > 0 Then
CType(myForm, Object)._Draw(device, DataXYZ_Gyr(DataXYZ_Gyr_index).GetValue(0), DataXYZ_Gyr(DataXYZ_Gyr_index).GetValue(1), DataXYZ_Gyr(DataXYZ_Gyr_index).GetValue(2), DataXYZ_Gyr(DataXYZ_Gyr_index).GetValue(3))
Else
CType(myForm, Object)._Draw(device, 0, 0, 0, 0)
End If
device.EndScene()
device.Present(myForm)
If DataXYZ_Acc_index > 2 Then
DataXYZ_Acc.RemoveRange(0, DataXYZ_Acc_index - 1)
End If
If DataXYZ_Gyr_index > 2 Then
DataXYZ_Gyr.RemoveRange(0, DataXYZ_Gyr_index - 1)
End If
CType(sender, Form).Invalidate()
End Sub
我的问候, Ribben