我有一个程序可以从串行设备中检索数据,然后将其放入服务器中,该服务器可由可以处理此协议的某些程序访问。此服务器是一个第三方程序,采用活动 x 控件的形式。
硬件设备需要一个 Thread.Sleep,这是不幸的。监视服务器的程序有时会在线程休眠期间查询服务器。这会导致它认为服务器出现故障。
我的下一个想法是将服务器放在一个单独的线程上,一个专门用于服务器任务的线程。在 UI 线程中,我运行以下代码:
Thread workerThread = new Thread(DoServerWork);
workerThread.SetApartmentState(ApartmentState.STA);
workerThread.Start();
在代表中,我有
public void DoServerWork()
{
rtu = new AxASMBSLVLib.AxASMBSLV();
rtu.CreateControl();
rtu.BeginInit();
rtu.OpenPort();
while (true)
{
}
}
问题是服务器开始工作,然后在大约 5 秒内变得无响应。我最初的想法是线程正在退出,但是 while(true) 应该防止这种情况发生。有什么想法吗?