Microsoft MVP성태의 닷넷 이야기
비동기적 이벤트 핸들링 방법 [링크 복사], [링크+제목 복사]
조회: 12098
글쓴 사람
임동찬 (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인가요? 재현이 가능한 최소화된 예제라도 있으면 좋겠는데, 일단은 이 정도의 정보가지고는 진단이 안 나옵니다. ^^
정성태

... 31  32  33  34  35  36  37  38  [39]  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
4884user8/31/20179294    답변글 [답변]: UI 변경 작업 여러개를 동시에 사용하려면 어떻게 해야되나요 ??파일 다운로드1
4881kmi8/30/20179484진행속도가 중간에 더뎌지는 문제가 있는데 해결할 수 있는 방법이 있나 궁금합니다. [3]
4880김호종8/29/20179884HTTP JSON POST 관련 질문 드립니다. [1]
4879aos8/27/201710056DateTime 표시할 때 포맷 설정시 밀리초까지 포함하는 법이 궁금합니다 [1]
4878heyh...8/25/201710149프로세스의 프로세스 찾기(?) [2]
4877강준8/24/20179352SQLite journal_mode=wal 관련하여 질문드립니다. [1]
4876heyh...8/23/20179584프로세스 초기화하기 [1]
4874ho8/22/20179653파일 확장자명을 이용해 파일의 실행 프로그램의 전체 경로를 얻어 올 수 있을까요? [1]
4875ho8/23/201710625    답변글 [답변]: 파일 확장자명을 이용해 파일의 실행 프로그램의 전체 경로를 얻어 올 수 있을까요? [1]
4873kmi8/21/201711451전역 변수를 쓰지 않고 여러 군데에서 같은 변수를 공용하는 방법이 궁금합니다. [4]
4872abcd8/18/201710128프로세스를 초기화 하는 명령어도 있나요? [1]
4871kmi8/17/201711447메모리 부족으로 종료되는 현상의 여러가지 이유가 무엇인지 궁금합니다. [2]
4870heyh...8/14/201710255프로그램 실행시 중복일 때 버튼 색깔 원래대로 돌리기 [1]
4868kmi8/4/20179565string[] 에 Reverse 적용방법 질문해봅니다 [3]
4867heyh...8/4/20179050EventHandler에 관한 [1]
486610년차8/3/20179492dsoframer axframer open시 기존 오픈되어있는 엑셀을 먹어버리는 현상 [1]
4865heyh...7/31/201711031클릭원스로 배포 한 프로젝트가 끝났는지 알 수 있는 방법 [8]
4864초보자7/28/201710039DllIImport질문 드립니다. [1]
4863다연아빠7/23/201710266전역 예외처리에 대해 질문있습니다. [3]
4861라르크7/17/201715536window form 예제 따라하는 중인데 12.3 서비스 응용 프로그램에서 진행이 안됩니다. [3]파일 다운로드1
4859heyh...7/10/201710180다른 환경에서 실행하기 [1]
4858heyh...7/10/201710030Clickonce update에 관한질문입니다. [1]
4857heyh...7/7/201710650제가 여태까지 작성한 보고서입니다. [2]파일 다운로드1
4856heyh...7/6/20179363성태님 다른질문입니다. [4]
4855JP7/6/201710057Dispose 패턴 구현시 Finalize 재정의에 대한 질문드립니다. [2]
4854heyh...7/6/20179488
... 31  32  33  34  35  36  37  38  [39]  40  41  42  43  44  45  ...