Windows 形成计时器不等待方法 return

Windows forms timer not waiting for method to return

我的 windows 表单计时器有问题,它应该调用一个使用 Serial.ReadExisting() 从串行读取数据的方法。 当我的 com 端口试图发送数据时,我经常收到来自计时器的多次调用,这会将单个字符串分成多个字符串。 这让我很困扰,因为我在返回的字符串前面放置了一个时间戳并将其附加到多行文本框。 有没有什么方法可以让计时器等到该方法完成读取传入数据而不必 delay/slow 关闭我的计时器?

我目前拥有的:

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

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

您可以禁用定时器,调用并再次启用它。

private void loop_Tick(object sender, EventArgs e)
{
    loop.Enabled = false;
    try
    {
        AddToTextBox(Program.SerialReadLine());
    }
    finally
    {
        loop.Enabled = true;
    }
}