程序响应速度不够快

时间:2017-06-12 14:07:45

标签: vb.net vb.net-2010

为了开始,我在工作中创建了一个程序来读取我们的网络工具并将检索到的数据存储到我们的数据库中。没问题,但我最初设置它的方式是每个工具都有自己的实例,并且每个工具都有硬编码。

现在我的任务是使程序更加用户友好,以便我可以将它发送到其他地方。所以现在我在装配线上数据工具的IP地址和位置,这样我就可以在代码执行时交叉引用。

在新程序中,我创建了一个Tool Reader类的数组:

Dim TB(50) As ReadAtlascopco

然后我在表单加载上运行这个循环:

Private dict As New Dictionary(Of Timer, Label)()

Private Sub CreateTimers()

    For i = 0 To IPCount
        TB(i) = New ReadAtlascopco
        ' timer(i) = New Timerarray
    Next
    For i As Integer = 1 To IPCount

        C = i - 1
        timer = New Timer() With {.Interval = 250, .Enabled = True, .Tag = i.ToString}

        AddHandler timer.Tick, (AddressOf timer_Tick)
        '  timer.Interval = (100 * i)

        label = New Label()
        label.Name = "label" & i
        label.Location = New Point(10, 10 + i * 25)

        label.Font = New Font("Sans Serif", 9, FontStyle.Bold)
        label.AutoSize = True
        'label.Width = 100
        'label.AutoEllipsis = False

        label.TabIndex = i
        label.Visible = True

        Me.Controls.Add(label)

        dict(timer) = label
        TB(C).ipaddress = TBData(C)
        TB(C).StartConnection()
        timer.Enabled = True
        timer.Start()

    Next

然后我通过计时器滴答事件。到目前为止,一切都很好。一旦我通过tick事件,它开始滞后,我错过了数据。

有没有办法加快这个过程?

这是tick事件:

Private Sub timer_Tick(ByVal sender As Object, ByVal e As EventArgs)
    Dim Stop_Num(50) As String
    Dim Line_Name(50) As String

    Dim t As Timer = DirectCast(sender, Timer)
    Dim s As Integer = Val(t.Tag) - 1

    Param1 = TBData(s)
    CWE(s) = False
    If Activestat(s) = True Then

        Dim SQL1 As String = "SELECT Stop_Num FROM TBL_Added_Boxes Where(IP_Address = N'" + Param1 + "')"

        Dim output1 As String

        Using cn = New SqlConnection(My.Settings.Torque_InfoConnectionString)
            Using cmd = New SqlCommand(SQL1, cn)
                cn.Open()

                Try
                    Dim dr1 = cmd.ExecuteReader()
                    While dr1.Read()
                        output1 = dr1("Stop_Num").ToString()
                    End While
                Catch ex As SqlException

                    WriteToErrorLog("Error pulling data from the database in reguards to torque box info (Stop Number).", ex.ToString(), "Failed to retreive Torque controler Info .")
                End Try
                cn.Close()

            End Using
        End Using

        Stop_Num(0) = output1

        Dim SQL2 As String = "SELECT Line_On FROM TBL_Added_Boxes Where(IP_Address = N'" + Param1 + "')"

        Dim output2 As String

        Using cn = New SqlConnection(My.Settings.Torque_InfoConnectionString)
            Using cmd = New SqlCommand(SQL2, cn)
                cn.Open()

                Try
                    Dim dr2 = cmd.ExecuteReader()
                    While dr2.Read()
                        output2 = dr2("Line_On").ToString()
                    End While
                Catch ex As SqlException

                    WriteToErrorLog("Error pulling data from the database in reguards to torque box info (Line On).", ex.ToString(), "Failed to retreive Torque controler Info .")
                End Try
                cn.Close()

            End Using
        End Using

        Line_Name(0) = output2

        If Line_Name(0) = "Line 1" Then
            Newlinename(s) = "Line1Serial"
        ElseIf Line_Name(0) = "Line 2" Then
            Newlinename(s) = "Line2Serial"
        ElseIf Line_Name(0) = "Line 3" Then
            Newlinename(s) = "Line3Serial"
        End If
        Param3 = Stop_Num(0)
        Param2 = Newlinename(s)

        Dim SQL As String = "SELECT " + Newlinename(s) + " FROM TBL_RunningLineStatus Where(Stop_Number = N'" + Stop_Num(0) + "')"

        Dim output As String

        Using cn = New SqlConnection(My.Settings.ScanBypassConnectionString)
            Using cmd = New SqlCommand(SQL, cn)
                cn.Open()

                Try
                    Dim dr = cmd.ExecuteReader()
                    While dr.Read()
                        output = dr(Param2).ToString()
                    End While
                Catch ex As SqlException

                    WriteToErrorLog("Error Pulling Data From The Database In reguards to Seat Data.", ex.ToString(), "Failed to retreive buildline data.")
                End Try
                cn.Close()

            End Using

        End Using
        TBSData(s) = output

        If Killall = "True" Then
            t.Stop()
        Else
            Try
                TB(s).GetData()
                If TB(s).Colorselect = 0 Then
                    dict(t).BackColor = System.Drawing.Color.GreenYellow
                    dict(t).ForeColor = Color.Black
                ElseIf TB(s).Colorselect = 1 Then
                    TB(s).ipaddress = TBData(s)
                    TB(s).StartConnection()
                    dict(t).BackColor = System.Drawing.Color.Red
                    dict(t).ForeColor = Color.White
                ElseIf TB(s).Colorselect = 2 Then
                    dict(t).BackColor = System.Drawing.Color.Purple
                    dict(t).ForeColor = Color.White
                End If

                If Olddata(s) <> TB(s).TorboxData(20) Then

                    Cname(s) = TB(s).TorboxData(2)
                    Tstatus(s) = TB(s).TorboxData(7)
                    TValue(s) = TB(s).TorboxData(19)
                    Sdata(s) = TBSData(s)
                    Tfinal(s) = TB(s).TorboxData(18)
                    TPset(s) = TB(s).TorboxData(30)
                    TFinalAngle(s) = TB(s).TorboxData(24)
                    RDAmin(s) = TB(s).TorboxData(25)
                    RDAmax(s) = TB(s).TorboxData(26)
                    RDAactual(s) = TB(s).TorboxData(27)
                    RDAStat(s) = TB(s).TorboxData(15)
                    Anglemin(s) = TB(s).TorboxData(21)
                    Anglemax(s) = TB(s).TorboxData(22)
                    AngleFT(s) = TB(s).TorboxData(23)
                    Anglestat(s) = TB(s).TorboxData(13)
                    Tormin(s) = TB(s).TorboxData(16)
                    Tormax(s) = TB(s).TorboxData(17)
                    TTTights(s) = TB(s).TorboxData(28)
                    TTSerial(s) = TB(s).TorboxData(29)
                    Olddata(s) = TB(s).TorboxData(20)
                    CWE(s) = True

                    dict(t).Text = t.Tag + " ) " + "Controler Name : " + TB(s).TorboxData(2) + ":  Status : " + TB(s).Connectiontext + " : Date :  " + Now() + "  :: SERIAL # : " + Sdata(s) + "   : From  : " + Newlinename(s) + " ::  Stop : " + Param3 + ""
                    ' .Text = t.Tag + " ) " + "Controler Name : " + TB(s).TorboxData(2) + ":  Status : " + TB(s).Connectiontext + " : Date :  " + Now() + "  :: SERIAL # : " + Sdata(s) + "   : From  : " + Newlinename(s) + " ::  Stop : " + Param3 + "")
                    dict(t).BackColor = System.Drawing.Color.Yellow
                Else
                    If TB(s).networkconnected = True Then

                        dict(t).AutoSize = True
                        'dict(t).Text = "Controler Name : " + TB(s).TorboxData(2) + ":  Status : " + TB(s).Connectiontext + " : Date :  " + Now()
                        dict(t).BackColor = System.Drawing.Color.Yellow
                        dict(t).ForeColor = Color.Black
                    Else
                        dict(t).Text = TB(s).Connectiontext + " :::: " + Now() + " ::  " + TBData(s)
                        dict(t).BackColor = System.Drawing.Color.Red
                        dict(t).ForeColor = Color.White
                    End If
                End If
            Catch ex As Exception
                WriteToErrorLog("Error Reading the torque box .", ex.Message, "Failed read torque data.")
            Finally
                'If CWE(s) = True Then
                '    Call Data_Entry()
                'End If
                If TValue(s) <> "" And CWE(s) = True Then
                    Try
                        con.ConnectionString = My.Settings.ScanBypassConnectionString
                        con.Open()
                        cmd.Connection = con

                        cmd.CommandText = "INSERT INTO TBL_Torque_Value1 (Serial_Num, Controler_Name, Torque_Status, Torque_Value, Date_Time,Extra_1, Extra_2, Extra_3,RundownMin,RundownMax,RundownAct,RundownStat,AngleMin,AngleMax,AngleFT,AngleStat,TorqueMin,TorqueMax,ToolTightens,Toolserialnum) VALUES(@p1,@p2, @p3, @p4, @p5, @p6, @p7, @p8,@p9, @p10, @p11, @p12, @p13, @p14, @p15, @p16, @p17, @p18, @p19, @p20)"

                        cmd.Parameters.Add("@p1", SqlDbType.NVarChar, 50)
                        cmd.Parameters.Add("@p2", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p3", SqlDbType.NVarChar, 50)
                        cmd.Parameters.Add("@p4", SqlDbType.NVarChar, 50)
                        cmd.Parameters.Add("@p5", SqlDbType.DateTime2, 7)
                        cmd.Parameters.Add("@p6", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p7", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p8", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p9", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p10", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p11", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p12", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p13", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p14", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p15", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p16", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p17", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p18", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p19", SqlDbType.NVarChar, 250)
                        cmd.Parameters.Add("@p20", SqlDbType.NVarChar, 250)

                        cmd.Parameters("@p1").Value = Sdata(s)
                        cmd.Parameters("@p2").Value = Cname(s)
                        cmd.Parameters("@p3").Value = Tstatus(s)
                        cmd.Parameters("@p4").Value = TValue(s)
                        cmd.Parameters("@p5").Value = Now()
                        cmd.Parameters("@p6").Value = Tfinal(s)
                        cmd.Parameters("@p7").Value = TFinalAngle(s) + " Deg"
                        cmd.Parameters("@p8").Value = "P:" + TPset(s)
                        cmd.Parameters("@p9").Value = RDAmin(s)
                        cmd.Parameters("@p10").Value = RDAmax(s)
                        cmd.Parameters("@p11").Value = RDAactual(s)
                        cmd.Parameters("@p12").Value = RDAStat(s)
                        cmd.Parameters("@p13").Value = Anglemin(s)
                        cmd.Parameters("@p14").Value = Anglemax(s)
                        cmd.Parameters("@p15").Value = AngleFT(s)
                        cmd.Parameters("@p16").Value = Anglestat(s)
                        cmd.Parameters("@p17").Value = Tormin(s)
                        cmd.Parameters("@p18").Value = Tormax(s)
                        cmd.Parameters("@p19").Value = TTTights(s)
                        cmd.Parameters("@p20").Value = TTSerial(s)

                        cmd.ExecuteNonQuery()

                    Catch ex As Exception

                        WriteToErrorLog("Error Inserting Data into The Database In reguards to Torque Data.", ex.Message, "Failed to Insert Torque Data.")
                        con.Close()
                        cmd.Parameters.Clear()
                        Cname(s) = ""
                        Tstatus(s) = ""
                        TValue(s) = ""
                        Sdata(s) = ""
                        Tfinal(s) = ""
                        TFinalAngle(s) = ""
                        TPset(s) = ""
                        RDAmin(s) = ""
                        RDAmax(s) = ""
                        RDAactual(s) = ""
                        RDAStat(s) = ""
                        Anglemin(s) = ""
                        Anglemax(s) = ""
                        AngleFT(s) = ""
                        Anglestat(s) = ""
                        Tormin(s) = ""
                        Tormax(s) = ""
                        TTTights(s) = ""
                        TTSerial(s) = ""
                    Finally
                        con.Close()
                        cmd.Parameters.Clear()
                        Cname(s) = ""
                        Tstatus(s) = ""
                        TValue(s) = ""
                        Sdata(s) = ""
                        Tfinal(s) = ""
                        TFinalAngle(s) = ""
                        TPset(s) = ""
                        RDAmin(s) = ""
                        RDAmax(s) = ""
                        RDAactual(s) = ""
                        RDAStat(s) = ""
                        Anglemin(s) = ""
                        Anglemax(s) = ""
                        AngleFT(s) = ""
                        Anglestat(s) = ""
                        Tormin(s) = ""
                        Tormax(s) = ""
                        TTTights(s) = ""
                        TTSerial(s) = ""

                    End Try
                End If

            End Try

        End If
    Else
        dict(t).AutoSize = True
        dict(t).Text = "Torque Box is not active ::  " + TBData(s) + "   ::"
        dict(t).BackColor = System.Drawing.Color.Black
        dict(t).ForeColor = Color.White
    End If

End Sub

被引用的类是我创建并正在工作的类,但就像我说的一切都很慢。它似乎在一次嘀嗒事件中挂了3到5秒。

到目前为止,我只有21个工具设置,所有人都需要大约15到30秒才能完成。

0 个答案:

没有答案