[제품종류] IEC1000
[개발환경] Visual Studio 2008 C#
=============== 질 문 ===============IEC1000제품을 사용중이고
MAINFORM에서 SmartTimer1를 사용중이며 내부에 이중For문으로 MODBUS로 데이터 읽고 읽은 내용을 DB에 쓰고
DB의 값과 사용자 설정값을 비교하여 MODBUS로 장치에 쓰는 작업을 진행하고 있습니다.
다음과 같습니다.
SmartTimer_Tick
{
MODBUS로 데이터 읽고 읽은 내용을 DB에 쓰는 작업
for()
{
for()
{
DB의 값과 사용자 설정값을 비교
MODBUS 로 장치에 쓰기
}
}
}
문제점은 위의 작업때문에 다른폼에서 TEXTBOX에 값을 입력하려고 할때 딜레이가 많이 발생합니다.
SmartTimer의 Tick은 10초마다 실행하다가 30초로 늘려봤는데 개선은 되지만 큰 개선은 찾지 못했습니다.
다음과 같이 Thread.Sleep()을 For문에 넣어봤는데 개선이 조금더 되는거 같습니다.
혹시 이와 같은 문제가 발생할때 크게 개선할수 있는 방법이 있을가요?
SmartTimer_Tick
{
MODBUS로 데이터 읽고 읽은 내용을 DB에 쓰는 작업
for()
{
Thread.Sleep(10)
for()
{
Thread.Sleep(10)
DB의 값과 사용자 설정값을 비교
MODBUS 로 장치에 쓰기
}
}
}
=============== 답 변 ===============
안녕하세요.
올려주신 예시 코드에서 Thread.Sleep(10) 대신 Application.DoEvents()를 사용하시면 좀 더 개선될 것으로 판단됩니다.
위와 같이 코드를 변경하여 한번 더 테스트해보시기 바랍니다.
감사합니다.