Windows формирует таймер, не ожидающий возврата метода - PullRequest
0 голосов
/ 10 ноября 2019

У меня проблема с таймером Windows Forms, который должен вызывать метод, который считывает данные из последовательного интерфейса, используя Serial.ReadExisting (). Я часто получаю несколько звонков от таймера, когда мой com-порт пытается отправить данные, что разбивает одну строку на несколько строк. Это беспокоит меня, так как я помещаю метку времени перед возвращаемой строкой и добавляю ее в многострочное текстовое поле. Есть ли способ для таймера подождать, пока метод не закончит чтение входящих данных, без необходимости откладывать / замедлять мой таймер?

Что у меня есть:

private void loop_Tick(object sender, EventArgs e)
{
    AddToTextBox(Program.SerialReadLine());
}

И

public static string SerialReadLine()
{
    string read = _serialPort.ReadExisting();
    return read;
}

1 Ответ

2 голосов
/ 10 ноября 2019

Вы можете отключить таймер, сделать вызов и включить его снова.

private void loop_Tick(object sender, EventArgs e)
{
    loop.Enabled = false;
    try
    {
        AddToTextBox(Program.SerialReadLine());
    }
    finally
    {
        loop.Enabled = true;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...