이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 24628|회답: 1

[윈폼] C# task.waitall이 인터페이스를 멈춥니다

[링크 복사]
게시됨 2017. 6. 26. 오후 10:01:09 | | |
오늘 프로그램을 작성했는데 winform 인터페이스가 멈춰 있고 반응하지 않는 게 아니라는 걸 알게 됐어요.
하지만 소프트웨어를 클릭해도 전혀 반사가 없고, 정지 상태에 빠진 상태입니다.


그 후 디버깅을 해도 예외가 발생하지 않았는데, 무슨 문제인가요?

이 문장을 메인 스레드에 작성했기 때문에, 메인 스레드는 모든 작업이 실행될 때까지 다음 코드를 실행하기 전에 기다리게 됩니다
저도 같은 문제를 겪었는데, 메인 스레드에서 새 자식 스레드를 열었는데, 모든 자식 스레드가 실행을 완료한 후 다음 메인 스레드의 코드를 실행하기 전에 wait 메서드를 사용하면 인터페이스가 멈추는 현상이 발생합니다
인터넷에서 댓글들을 보고 갑자기 깨달았어요, 내가

이 스레드는 모든 작업이 끝나기를 기다리는 메인 스레드에서 작성되며, 그 결과 인터페이스가 정지 상태에 들어갑니다

해답은 다음과 같습니다:

스레드를 바깥쪽에 감아서 풀어보세요!




이전의:WebAPI 범용 서명 검증 (2)
다음:알리바바 클라우드 SMS 서비스는 프로모션용 SMS 메시지를 배치로 전송합니다
게시됨 2022. 12. 1. 오후 3:02:09 |
저도 같은 문제가 생겼어요. 시작한 후 task.waitall로 막히면 서브스레드가 멈춰버려요.
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com