sophia kylie taylor Ответов: 1

Запуск функции после определенного значения по таймеру в VB.NET


Я хотел бы запустить определенную функцию, когда таймер достигнет 50, появится окно сообщения, а затем конкретные функции запустятся и сбросят его обратно на 0, не могли бы вы помочь просмотреть и добавить коды, которые могут помочь мне в этом?

Примечание: label1.text-это то место, где отображается таймер

Ценю вашу помощь.

Заранее спасибо

Вот код, над которым я работал.:

 If label1.text = "50" Then

            MessageBox.Show("Please wait were updating the data table..")
            Timer1.Stop()


            Dim sqlquery As String = "SELECT PT_N_Std_Tuning, PT_TimeIn, PT_TimeOut, Variant FROM tbl_V9_Datalog WHERE Variant = '5' AND dateadd(hour, -1, dateadd(hour,datediff(hour,0,getdate()),0)) <= [PT_TimeIn]
            and PT_TimeIn < dateadd(hour,datediff(hour,0,getdate()),0) ORDER BY PT_TimeIn ASC"
            

            Dim reader As SqlDataReader
            Dim adapter As New SqlDataAdapter
            Dim command As New SqlCommand
            command.CommandText = sqlquery
            command.Connection = conn1
            adapter.SelectCommand = command
            'command.Parameters.Add("@variantno", SqlDbType.VarChar).Value = cmbox_variant.Text

            reader = command.ExecuteReader


            Dim DataTableName As String = textbox1.text
            Dim dValue As Double
            Dim ID1 As String = ""
            Dim ID2 As String = ""
            Dim ID3 As String = ""
            Dim ID4 As String = ""
            Dim ID5 As String = ""
            Dim ID6 As String = ""
            Dim ID7 As String = ""
            Dim ID8 As String = ""
            Dim ID9 As String = ""
            Dim ID10 As String = ""
            Dim ID11 As String = ""
            Dim ID12 As String = ""
            Dim Note1 As String = ""
            Dim Note2 As String = ""
            Dim sDate As String = ""
            Dim sTime As String = ""
            Dim wd As Int32 = S2K_SetDataTableVariableValue(DataTableName, dValue, ID1, ID2, ID3, ID4, ID5, ID6, ID7, ID8, ID9, ID10, ID11, ID12, Note1, Note2, sDate, sTime)
            Try

                If reader.HasRows Then
                    While reader.Read()
                        dValue = (Val(reader.Item("PT_N_Std_Tuning").ToString))
                        DataTableName = TextBox1.Text
                        ID1 = reader.Item("PT_TimeIn").ToString
                        ID2 = ""
                        ID3 = ""
                        ID4 = ""
                        ID5 = ""
                        ID6 = ""
                        ID7 = ""
                        ID8 = ""
                        ID9 = ""
                        ID10 = ""
                        ID11 = ""
                        ID12 = ""
                        Note1 = "" 'reader.Item("AttemptNo").ToString
                        Note2 = ""
                        Dim sDate1 = reader.GetOrdinal("PT_TimeOut")
                        sDate = reader.GetDateTime(sDate1).ToShortDateString
                        Dim sTime1 = reader.GetOrdinal("PT_TimeOut")
                        sTime = reader.GetDateTime(sTime1).ToLongTimeString
                        wd = S2K_SetDataTableVariableValue(DataTableName, dValue, ID1, ID2, ID3, ID4, ID5, ID6, ID7, ID8, ID9, ID10, ID11, ID12, Note1, Note2, sDate, sTime)
                    End While


                    MessageBox.Show("Data has been updated")
                End If 
End If


Что я уже пробовал:

Пожалуйста, обратитесь к кодам, я использовал label1.text, но он не запускает функцию после достижения 50.

1 Ответов

Рейтинг:
0

OriginalGriff

Вместо использования меток установите класс уровня DateTime и установите его на текущее время + 50 секунд - DateTime.AddSeconds сделает это (предполагая, что это 50 секунд, которые вы пытаетесь засечь, доступны другие методы "AddXXX" )
Затем, в вашем таймере.Отметьте событие, проверьте текущее время против времени истечения срока действия, и если оно больше равного, остановите таймер и отобразите свое сообщение.
Или лучше, не останавливайте таймер, просто установите время истечения срока действия на DateTime.MaxValue, который будет иметь тот же эффект, но означает, что таймер может быть повторно использован позже, если это необходимо (таймеры-это дефицитный ресурс, поэтому вы не хотите генерировать больше, чем вам нужно).
При необходимости вы можете установить текст метки на разницу между датами и временем.Теперь и время истечения срока действия вместо того, чтобы пытаться увеличить строковое значение.