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

보기: 21695|회답: 1

[출처] .net/c# 프로그램을 망치는 이벤트에 주의하세요

[링크 복사]
게시됨 2016. 9. 21. 오후 4:05:58 | | | |
이벤트는 메인 스레드에서 로드되고 실행되며, 메인 스레드의 첫 번째 이벤트가 완료되지 않으면 두 번째 이벤트로 넘어가는데, 메인 스레드의 다른 프로그램들처럼 이전 이벤트가 처리가 끝날 때까지 기다린 후 다음 프로그램이나 이벤트를 처리합니다.




위 내용은 제가 직접 어떤 대상을 캡슐화했고, 그 대상에 제가 직접 사건을 캡슐화한 것입니다.

저는 이미지 주석 부분과 같은 이벤트 구독 방식으로 데이터를 처리합니다.

제가 구독한 이벤트가 read txt 파일이었고, 제 txt 파일이 50,000줄이라서 이벤트 메서드가 50,000번 트리거되었기 때문입니다.

그런데 프로그램을 실행했을 때, 인터페이스가 정지 상태에 빠져 있었고, 분명 문제가 있다는 걸 알았어요.

처음에는 조작된 UI 조작이 가짜 죽음을 일으킨 것이라고 생각했습니다.

그 후 단계적으로 데이터를 추가했을 때 이미 정지 상태에 들어간 상태임이 밝혀졌습니다.

왜??? 마지막으로 인터넷에서 알게 된 건, 이벤트가 메인 스레드에 있고, 첫 번째 이벤트가 처리되지 않으면 다음 이벤트 실행이 차단된다는 것입니다.

솔직히 말해, 5만 번의 이벤트가 프로그램을 차단하게 만들었고, 그 후 나는 동면 상태에 빠졌다.

용액:

많은 이벤트 메서드를 실행하지 않는 일부 단순 이벤트는 이벤트 메서드에 직접 기록할 수 있습니다.

많은 이벤트 메서드가 호출될 경우, 소켓이나 httplistener 같은 스레드를 열어 처리해 주시길 바랍니다. (데이터 양이 적고 보이지 않지만, 데이터가 많아지면 바로 사라집니다, 하하)




이전의:C#은 이메일 주소 코드를 대량으로 생성합니다
다음:클라우드 방송 플레이어 분석, 썬더볼트 및 QQ 회오리바람 인터페이스 분석
게시됨 2016. 9. 22. 오전 9:23:17 |
누군가 아주 잘 글을 올렸어요, 지원
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com