我有一个应用程序,我可以从串行端口读取数据,一切正常,直到我关闭该应用程序。当我单击 [X] 时,应用程序只是挂起,UI:无响应。
我从 DataReceived 事件处理程序中的端口读取数据,并在 FormClosed 发生时关闭端口:
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
mySerialPort.Close();
}
这不是一个错误。
当您关闭它时它会挂起的唯一原因是因为在 SerialPort 对象的事件处理程序中,您正在将调用与主线程同步(通常通过调用调用)。 SerialPort 的 close 方法等待其触发 DataReceived/Error/PinChanged 事件的 EventLoopRunner 线程终止,但由于事件中您自己的代码也在等待主线程响应,因此您会遇到死锁情况。
错误报告“按设计”关闭的原因是因为“错误”存在于您自己的代码中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)