void FileTransProtocol_EndOfTransmit(object sender, EventArgs e) { SetEndTransmit(); TimeSpan ts = DateTime.Now - startTime; ShowTextReprot(string.Format("传输完成,用时{0:D2}:{1:D2}:{2:D2}.{3:D3}. 正在自动重启下位机...", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds)); this.BeginInvoke(new Action <FormFirmwareUpdate>(async(obj) => { m_flowSensor.DataRecved -= OnUartDataRecved; bool bRet = await m_flowSensor.StartOTARebootAsync(); if (bRet) { /* 重启前关闭串口 */ m_flowSensor.Close(); /* 等待重启完成 */ await Task.Delay(10000); /* 重新开启串口 */ bRet = m_flowSensor.Open(); if (bRet) { /* 获取固件版本号 */ string ver = await m_flowSensor.BoardVersionAsync(); ShowTextReprot(string.Format("传输完成,用时{0:D2}:{1:D2}:{2:D2}.{3:D3}. 下位机重启完成,固件版本号: " + ver, ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds)); } else { ShowTextReprot(string.Format("传输完成,用时{0:D2}:{1:D2}:{2:D2}.{3:D3}. 获取下位机版本号失败!", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds)); } buttonStart.Text = "关闭"; } else { ShowTextReprot(string.Format("传输完成,用时{0:D2}:{1:D2}:{2:D2}.{3:D3}. 自动重启下位机失败!", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds)); } }), this); }