[제품종류] IEC1000Lite
[개발환경] Visual Studio 2008 C#
=============== 질 문 ===============워크 스레드에서 스마트 타이머 시작이 안되는데, 해결방법 문의
UI 스레드나, 다른 이벤트에서만 시작할 수 있나요??
=============== 답 변 ===============
안녕하세요. HNS입니다.
SmartTimer는 UI Thread에서 동작합니다.
따라서 Work Thread에서 SmartTimer를 직접 동작시킬 수 없으며, UI Thread를 간접 호출하여 SmartTimer를 실행해야 합니다. 아래에 간단한 예제를 첨부드립니다.
// smartThread를 실행하는 버튼 클릭 이벤트
private void ButtonStart_Click(object sender, EventArgs e)
{
// Work Thread에서 UI Thread를 간접 호출할 수 있도록 설정
smartThread1.WorkerReportsProgress = true;
smartThread1.Start();
}
// Work Thread에서 실행되는 이벤트
private void smartThread1_ThreadFunction(SmartX.ThreadArgs args)
{
// ReportProgress()를 호출하면 UIThreadFunction 이벤트가 실행됨 ( 인자값 : UIThreadFunction이벤트 코드의 인자)
smartThread1.ReportProgress(1); // Timer 시작 요청
}
// UI Thread에서 실행되는 이벤트
private void smartThread1_UIThreadFunction(SmartX.ThreadArgs args)
{
// SmartTimer는 UI Thread에서만 동작 가능하므로UI Thread 함수에서 Timer를 시작
if (args.iProgressPercentage == 1)
smartTimer1.Start();
else
smartTimer1.Stop();
}
자세한 내용은 SmartX 홈페이지의 Part 4. 사용자 편의 컴포넌트 > SmartThread > 3) 프로그래밍 적용 가이드 내 [CASE-3] Work Thread + UI Thread 사용하기 내용을 참고해 주시기 바랍니다.( https://www.smartx.co.kr/page4_9.php )
감사합니다.




