Microsoft MVP성태의 닷넷 이야기
비동기적 이벤트 핸들링 방법 [링크 복사], [링크+제목 복사],
조회: 20264
글쓴 사람
임동찬 (dngchn.im at samsung.com)
홈페이지
첨부 파일
 

오전에 사운드 파일을 재생시키다 중간, 중간 끊기는 문제에 대해 질문했었다가 원인을 알아내어 지우고 다시 씁니다. -.-

메인 객체에서 이벤트가 발생하면, 이벤트를 뿌려주는 대신 아래와 같이 invoke시키는 구조인데요. (try/catch 걸어, 구독자 한놈이 오류나면, 뒤에 영향 없게 하려고)

                  foreach (Delegate eventHandler in this.MyEvent.GetInvocationList())
                {
                    try
                    {
                        eventHandler.DynamicInvoke(new object[] { action });
                    }
                    catch
                    {

                    }
                }

구독자 a, b, c가 있을때 b에서 로드가 많은 일을 수행합니다. c가 사운드 출력 역할을 하구요.
그래서 b로 인해 c에서 출력하는 사운드가 뚝뚝 끊기는 문제가 발생했구요.
보통 위와 같이 invoke시키면 비동기적으로 수행되지 않는지요?
혹시나 싶어, b와 c 핸들러에서 별도 쓰레드를 만들어주어 실행시켜도, b로 인한 지연인지, c에서는 계속 문제가 발생합니다.
각 핸들러가 서로 영향없이 비동기적으로 수행되게 해주고 싶은데, 어떻게 하면 될까요?









[최초 등록일: ]
[최종 수정일: 8/28/2013]


비밀번호

댓글 작성자
 



2013-08-28 08시45분
[ryujh] 안녕하세요.

getinvocationlist dynamicinvoke 로 검색한 결과 중 하나인데 참고하십시오.

http://stackoverflow.com/questions/7083618/alternative-for-using-slow-dynamicinvoke-on-muticast-delegate

닷넷 버전이 3.5 이상이어야 할것 같습니다.

이상입니다.
[guest]
2013-08-29 11시08분
글쎄요. 이벤트 처리기에서 스레드로 처리했음에도 불구하고 끊긴다면... 방법이 없는데요. 설마... 그 PC가 단일 CPU인가요? 재현이 가능한 최소화된 예제라도 있으면 좋겠는데, 일단은 이 정도의 정보가지고는 진단이 안 나옵니다. ^^
정성태

... [76]  77  78  79  80  81  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
636라이프가드4/27/200715921Insert 오류입니다. CLOB ........ [1]
635박희진4/27/200716405스마트클라이언트 위로 DIV가 못올라오고 스마트 클라이언트 뒤로 숨는 현상 [1]
632해운대끓...4/23/200714487이전에 소개 되었던 확장 매서드 아티클을 읽고 생각나는 의문 [1]
620이방은4/18/200717631질문있어요.. [2]
6196/17/200716919Child Form 에서 Mdi Form 의 메소드 Access 방법 [1]
616김우정4/15/200720127CAS 보안설정을 위한 ActiveX 관련 질문입니다 [2]파일 다운로드1
614박성희4/13/200716100IE Embedded된 스마트클라이언트로 로그인 정보를 보내려면 어떻게 해야 되나요? [2]
612김성헌4/11/200718795Vista, ShellExecute(,"runas",) 문제 [1]
611탑~4/10/200714577페이지 치고 들어가는거 막기... [2]
606한귀순4/3/200715943combobox usercontrol [2]
604채영사랑3/29/200716275<질문> System.Runtime.InteropServices.COMException: 개체가 필요합니다. [2]
603근바이3/28/200715898솔루션 -> 구성관리자 [1]
602김성헌3/27/200716398ActiveX 브로커 모듈과 통신방법은 RPC ??
607정성태4/4/200718595    답변글 [답변]: ActiveX 브로커 모듈과 통신방법은 RPC ??
601엔틱스3/22/200716534자동 로그인의 궁금증 [1]
600창민이3/16/200719974ATL 동적조회 관하여... [2]파일 다운로드1
597ygso...3/14/200715355단순 무식한 궁금증.. [1]
596조빵3/14/200715510SmartClient로 사용자PC의 엑셀을 실행시킬수는 없나요? [1]
594ygso...3/13/200716096ClickOnce를 이용하여 SmartClient를 배포할경우.. [2]
589김희택3/2/200714980리소스 추가 방법에 대한 아티클을 보던중에 질문요... [1]파일 다운로드1
588이성진2/24/200717444웹 -> 스마트클라이언트 -> 웹서비스 의 세션 공유 방법 ? [1]
583김영민2/22/200715347Vista에서 "관리자 권한으로 실행"을 통해 실행한 프로세스의 동작
584정성태2/22/200716945    답변글 [답변]: Vista에서 "관리자 권한으로 실행"을 통해 실행한 프로세스의 동작
582한귀순2/22/200715473sqlhelper 의 updatedataset
585정성태2/23/200714716    답변글 [답변]: sqlhelper 의 updatedataset [1]
579futu...2/16/200716079VS2005의 스마트 클라이언트에서 웹브라우저 예제 질문입니다. [1]
... [76]  77  78  79  80  81  82  83  84  85  86  87  88  89  90  ...