C# UI를 사용하여 여러 스레드를 트리거하고 있습니다. 각 스레드는 완료하는 데 몇 분이 걸리는 단일 기능을 나타냅니다.C# 멀티 스레드 거대한 지연과 블로킹
UI가 동일한 스레드를 여러 번 트리거 할 수 있으므로 스레드를 여러 번 다시 시작해야합니다. 그러나 스레드는 다시 시작할 수 없습니다. 상태가 잘못된 경우에 따라서, 내가 스레드에 대한 상태 변수를 생성, 스레드는 코드가 실행되지 않습니다 : 두 개 이상의 스레드가 이런 방식으로 작업 할 때
private void FindThread(int nod)
{
//Find the minimum reading
while (true)
{
if (state == MYSTATE.find)
{
dowork();
}
}
}
그러나, 그것은 보인다 그 동안 (true) 문장만으로 전체 프로그램을 차단할 수 있습니다 ....
내 프로그램에서는 한 번에 하나의 스레드 만 작업을 수행합니다. 나는 사건으로 큰 실을 만들기를 생각하고있다. 의견을 제시해 주시겠습니까? 나는 더 나은 해결책이있을 수 있다고 생각한다.
고마워요.
사용 LOCKS이 경쟁 조건을 피하기 위해 en-us/library/h4732ks0.aspx –
'state'가'MYSTATE.find'와 일치하지 않으면 얼마나 많은 CPU가'while' 루프를 소비 할 것으로 기대합니까? 루프를 종료시키는 것은 무엇입니까? '고개 끄덕 '? – HABO
@HABO, 상태가 일치하지 않으면 CPU가 아무 것도하지 않습니다. 그러나 상태가 일치하는지 여부는 계속 확인됩니다. – richieqianle