2014-02-20 1 views
0

주 폼과 팝업 창에서 데이터를 읽는 응용 프로그램이 있습니다. 내 응용 프로그램의 기본 양식에서 ASCII로 실시간 직렬 통신을 읽습니다. 내 팝업 창에서 내 프로그램은 해당 데이터를 분석하고 통과/실패 시나리오를 캡처합니다.프로그램 실행 중에 Windows Forms가 멈 춥니 다.

내 프로그램을 실행할 때 의도 한대로 작동합니다. 그러나 프로그램이 실행 중일 때 (끝내려면 2 분 정도 소요됩니다.) 팝업창을 화면 주위로 움직이거나 기본 응용 프로그램 창을 최소화 할 수 없습니다. 마치 수술이 끝날 때까지 붙어있는 것처럼 보입니다. "응답 없음"메시지가 표시되지 않고 작업 중에 이동/최소화/닫을 수있는 방법을 파악하려고합니다.

답변이 멀티 스레딩입니까? 어떤 도움을 주셔서 감사합니다.

+1

UI를 차단하고 있습니다. 이런 종류의 작업은 별도의 스레드에서 수행해야합니다. 'BackgroundWorker'를 사용하십시오. – etaiso

+0

예, 주 스레드가 잠겨있어 백그라운드 스레드를 사용하려고합니다. –

+0

DataReceived 이벤트 처리기에서 BeginInvoke()를 호출하여 UI 스레드를 너무 자주 숨기는 경우가 있습니다. –

답변

1

'주 스레드'와 매우 긴 시간을 할 것입니다. 이 매우 큰 작업을 실행하기 위해 새로운 '스레드'를 만들어보십시오. 그러면 양식이 잠기지 않습니다.

+0

높은 수준에서 우리 프로그램은 직렬 데이터 (주 창)를 읽고, 직렬 데이터 (주 창)를 표시하고, 데이터 (팝업 창)를 분석합니다. 데이터 라인을 받아 즉시 분석해야하므로 모든 것이 순차적입니다. 멀티 스레딩이이를 병렬로 실행합니까? 그렇다면 순차적 순서가 필요하기 때문에 그것이 작동 할 지 확신하지 못합니다. – Nevets

+0

관리자를 만들고, 목록을 만들고, 분석 할 itens를 추가하고, 스레드를 순서대로 분석하려고 할 수 있습니다. –

+0

Lucas, 고맙습니다. – Nevets

0

멀티 스레딩을 사용해야하거나 일부 비동기/대기 작업이 필요할 수 있습니다. 이 도움이

http://msdn.microsoft.com/en-us/library/ms173178.aspx

http://msdn.microsoft.com/en-us/library/vstudio/hh191443(v=vs.110).aspx

희망!

+0

높은 상태 내 프로그램은 직렬 데이터 (주 창)를 읽고, 직렬 데이터 (주 창)를 표시하고, 데이터 (팝업 창)를 분석합니다. 데이터 라인을 받아 즉시 분석해야하므로 모든 것이 순차적입니다. 멀티 스레딩이이를 병렬로 실행합니까? 그렇다면 순차적 순서가 필요하므로 잘 모르겠다. – Nevets

+1

그래, 어쩌면 표시 후 데이터를 분석하는 데 시간이 너무 오래 걸리는 것일 수도 있고, 분석 작업을 수행하는 부분을 배경 작업자 같은 것으로 처리 할 수도있다. 이렇게하면 화면에 데이터가 표시되지만 데이터를 분석 (예 : 창 닫기) 할 때까지 기다릴 필요가 없습니다. ;) –

+0

오스카 감사합니다, 그 시도해 보겠습니다. – Nevets