Timer和DirectX

时间:2012-03-07 13:21:54

标签: c# vb.net timer directx

我再一次需要你的帮助。我在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

0 个答案:

没有答案