주기적으로 10 초 실행되는 작업이 있습니다. 필자는 데이터베이스를 읽음으로써 프로세스를 리프레시하는 그림 상자를 만들었습니다. 내가 원하는 것은 스레드를 호출하거나 깨우고 단추를 즉시 클릭 할 때 새로 고침 작업을 수행하는 것입니다. 간단히 말해서, 나는 새로 고침 작업이 시간뿐만 아니라 이벤트에 의해 주도되기를 원합니다. 이것이 가능한가? 그렇다면 어떻게? 작업의 코드 블록은 아래와 같습니다.자고있는 동안 잠을 자다
while (true)
{
// do some refresh operation
Thread.Sleep(10000);
}
void button1_Click(object sender, EventArgs e)
{
// invoke or awaken thread
}
하지이 while 루프와 - 기본적으로 Thread.Sleep 당신은 창문을 말하는거야 - 다음 10 초 안에 그 스레드를 예약하지 마라. 나는 그것을 되 찾을 수있는 방법을 모른다. 시간 간격을 줄이고 루프 내부의 변수를 검사 할 수 있습니다. – Bond
타이머 컨트롤을 사용하십시오! 그것을 위해 만들어졌습니다. 틱 이벤트가 UI 스레드 내에서 발생하므로 멀티 스레딩 작업을 수행하지 않아도됩니다. –
내가 이해하지 못하는 것은 다음과 같습니다. 타이머가 GUI를 업데이트했다고 가정하고 5 초 후에 다른 수동 업데이트 버튼을 클릭합니다. 타이머가 5 초 후 자체 업데이트를 실행해야합니까, 아니면 다음 턴까지 멈추어야합니까? – Tudor