2014-02-19 8 views
0

외부 소스 (FileSystemWatcher)에서 오는 이벤트를 계속 시청해야하는 프로그램이 있으며 소스에서 처리 코드가 빠를 필요가 있거나 다음 이벤트가 손실 될 수 있습니다.별도의 스레드에서 이벤트보기 C#

언제든지 내 프로그램이 과중한 작업을 수행하고있을 수 있습니다.

First question: 

과도한 작업 중에 외부 이벤트가 발생하면 내 프로그램이 이벤트를 처리하기 전에 작업을 완료합니까? 내 주요 질문은 내가 외부 소스에서 only 이벤트 handlings을 할 수있는 별도의 영구적 인 스레드를 만들 수있는 방법 그래서

Second question: 

나는, 스레딩에 안돼서? 첫 번째 방법은이 스레드가 주 코드가 액세스 할 수있는 데이터를 단순히 저장하고 무거운 코딩을 사용하여 저장된 데이터를 처리하는 것입니다.

감사합니다.

+0

당신이 비동기에 대해 읽고 기다리고 있나요? http://msdn.microsoft.com/en-us/library/hh191443.aspx – TheGeekYouNeed

+1

질문을 올바르게 이해하면 수행 할 수있는 일은 이벤트의 모든 컨텍스트를 저장하고 작업 항목을 스레드 풀에 할당하고 풀 스레드가 무거운 작업을 수행하고 원래 스레드가 외부 코드를 매우 빨리 반환하도록합니다. 이것은 일단 저장되면 문맥이 무효화되지 않는다고 가정합니다. – LB2

+0

서식이 매우 자극적입니다. 옵션을보고 제정신을 사용하십시오. http://stackoverflow.com/editing-help - 감사합니다. (아니요,'code'로 포맷 해주세요 ** ** 캡션 **, ** bold **, * emphasized * 또는 번호가 매겨진 목록은 제정신이 아닙니다.) – JensG

답변

1

이벤트는 이벤트를 발생시키는 스레드에서 실행됩니다. 응용 프로그램이 비싼 작업을 수행하고 이벤트가 다른 스레드에서 시작되면 두 스레드 간의 동기화가 두 가지가 독립적입니다.

폴링하여 이벤트를 처리하는 경우 하나의 활동이 다음 활동을 보류합니다.

처리중인 이벤트와 처리 방법을 알지 못하면 가장 일반적인 조언 일뿐입니다.

--- 편집

Does FileSystemWatcher create its own thread?

+0

이벤트를 발생시키는 FileSystemWatcher입니다. 이벤트가 이미 별도의 스레드 (FileSystemWatcher 스레드)에서 처리되므로 걱정할 필요가 없습니다. –

관련 문제