PLC에서 읽은 신호가 참인지 거짓인지를 확인하는 응용 프로그램이 있습니다. - 일련의 계산을 수행하고 false 일 경우 신호를 기다립니다. 이 작업을 수행하는 동안 while 루프를 사용하고 있습니다. 그러나 문제는 실제 상태가 1000ms 동안 유지되고 루프가 100ms 미만으로 완료되므로 다시 돌아가고 상태가 참이므로 다시 확인합니다. 따라서 PLC로부터 수신 한 1 개의 신호에 대해 루프는 약 9-10 회 실행됩니다. thread.sleep을 추가하려고했지만 여전히 여러 번 처리합니다. 상태가 참일 때 루프가 한 번 실행되고 다시 참이 될 때까지 기다려야합니다.루프를 완료하는 데 필요한 것보다 더 많은 시간 동안 조건이 true로 유지되는 경우에도 while 루프를 한 번 실행하는 방법
bool isRunning = true;
private void WorkThreadFunction()
{
while (isRunning)
{
if (ethernetIPforSLCMicroCom1.Read("B3:254/1") == "True")
{
stopWatch = Stopwatch.StartNew();
int isTriggered;
Int32.TryParse(trigger, out isTriggered);
timer1.Start();
Thread.Sleep(10);
serialcheck();
System.GC.Collect();
}
}
저장 및 비교를 통해 변경 사항을 감지해야합니다. – john
그런 다음 루프를 사용하지 않으므로 이러한 동작에 이벤트를 사용합니다. – Karolis
타이머 내에서 if 문 전체를 이동하려고했습니다. 똑같은 일이 일어난다. 제안의 샘플 코드를 제공해 주시겠습니까? – user3177511