У меня есть программа, которая извлекает данные с последовательного устройства, а затем помещает его на сервер, доступный для определенных программ, которые могут обрабатывать этот протокол. Этот сервер является сторонней программой, которая находится в форме активного элемента управления x.Запуск сервера в отдельном потоке
Для аппаратных устройств требуется Thread.Sleep, что является неудачным. Программы, которые контролируют сервер, иногда запрашивают сервер во время спящего потока. Это заставляет думать, что сервер потерпел неудачу.
Моя следующая идея состояла в том, чтобы разместить сервер в отдельном потоке, который был специально предназначен для задач сервера. В потоке пользовательского интерфейса, я запускаю следующий код:
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) должен помешать этому. Есть предположения?
'while (true)' будет потреблять много процессорного времени. Разве вы не слышали, как фанаты готовятся? –
Да, я знаю. Сначала у меня был Thread.Sleep (1), но та же проблема была. – Tim