sepehrtavangar Ответов: 2

Ho повторять определенный код каждые n интервалов времени


Привет, я только что написал код, который импортирует данные конкретной ячейки из файла excel.
теперь я хочу сделать 2 работы с моим кодом вот они:
1.я хочу, чтобы код, который должен повторяться каждые N минут. Я попытался использовать код, который я упоминаю здесь, но приложение просто выдало мне эту ошибку:
Недопустимая операция кросс-потока: элемент управления "textbox1" доступен из потока, отличного от потока, в котором он был создан.

2.я хочу, чтобы приложение, которое после 10 раз повторения проверяет вывод, если он такой же, как и первый вывод, останавливает цикл и показывает окно сообщения.

Я ценю вашу помощь!

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

Общественные подпрограммы обработчика button1_click(отправителя как объект, а равно EventArgs) обрабатывает кнопки button1.Щелчок
Тусклые минуты как двойные = 0,5
Dim t как новая система.Таймеры.Таймер(60000 * минут)
Добавитьобработчик Т.Прошедшее, оператором addressof t_Elapsed
Т.Начать()
конец подводной лодки
Private Sub t_Elapsed(отправитель как объект, e как система.Таймеры.ElapsedEventArgs)
- здесь я пишу свой основной код для повторения
конец подводной лодки

F-ES Sitecore

Google сообщение об ошибке, которое вы получаете, это очень часто задаваемый вопрос и легко решаемый.

2 Ответов

Рейтинг:
2

OriginalGriff

Ошибки перекрестного потокования возникают при попытке доступа к элементам управления из потока, в котором они не были созданы - потока пользовательского интерфейса. таймер.Прошедшее событие не происходит в главном потоке, поэтому его необходимо вызвать с помощью Контроль.Вызов Метода (System.Окна.Формы) | Microsoft Docs[^]


sepehrtavangar

большое спасибо но так как я очень новичок в написании кодов я не мог понять что было написано на сайте который вам дали

OriginalGriff

Вы имеете дело со сложными вещами - если вы еще не можете понять документацию, то вы пытаетесь бежать, прежде чем сможете ходить, и вам нужно сначала сделать резервную копию и изучить некоторые основы более подробно.

Рейтинг:
11

kgmmurugesh

Public Class Form1
    Private Ncount As Integer = 0
    Private Nminute As Integer = 4
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Timer1.Interval = nminute * 60000
        Timer1.Start()
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        'write your code
        Ncount = Ncount + 1
        If Ncount > 10 Then
            Timer1.Stop()
            'write your code to check
        End If
    End Sub
End Class


sepehrtavangar

спасибо,но ...
этот код ничего не делает, я имею в виду, что ничего не произойдет.

kgmmurugesh

Таймер1.Тиковое событие срабатывает каждые 4 минуты. Уменьшите timer1.inverval, а затем проверьте.

sepehrtavangar

Привет, я изменил первое значение Nminute, а также количество n в if, но код просто запустился на этот раз.
но изменив строку : Timer1.stop()
к концу моего базового кода проблема была решена и после n попыток времена закрылись большое вам спасибо

kgmmurugesh

ОК.