2011-08-12 3 views
3

JSON 서비스와 대화하는 헬퍼 클래스를 만들었습니다. 클래스는 백그라운드 스레드에서 작업을 수행합니다. 작업이 완료되면 클라이언트가 전송 한 작업 <> 콜백을 호출합니다..Net : 콜백은 어떤 스레드에 있어야합니까?

도우미 클래스가 기본 UI 스레드에서 < 매크로 콜백 콜백을 호출하거나 클라이언트의 스레딩을 수행하는 것이 가장 좋습니다.

답변

2

object Fetch() 및 명시 적으로 표시된 비동기 API void FetchAsnyc(Callback)과 같은 완전한 동기식 API를 제공해야합니다. 클라이언트가 멀티 태스킹에 다른 접근 방식을 사용하면 동기식 API로이를 구현할 수 있습니다.

UI 스레드는 실제로 사용자 범위가 아닙니다.

0

데이터를 동시에 수신 및 전송할 수있는 비동기 서비스를 제공하기 때문에 서비스 안정성이 향상됩니다. 이 접근법은 클라이언트 측 문제의 경우에 자주 발생하는 저속 소비자 문제를 피할 수 있으므로 그러한 종류의 느린/문제가있는 클라이언트로부터 서비스가 안전합니다.

UI 스레드는 클라이언트의 책임입니다. 기본적으로 클라이언트는 UI 스레드에 작업을 전달해야합니다.

는 편집 :

void Subscribe(IEnumerable<TMessage> messages); 
void Subscribe(IEnumerable<TMessage> messages, SynchronizationContext synchronizationContext); 

를 따라서 클라이언트가 옵션이 있는지 여부 서비스를 사용할 수 있도록 자신의 동기화 컨텍스트를 전달합니다 Skomski의 대답은 나에게 우리가 최근

기본적으로 서비스가 다음은 같은 방법을 제공합니다 사용했습니다 접근 방식을 리콜 메시지를 보낼 때

synchronizationCOntext.Post(clientCallback, ...); 

또는 더 간단한 방법으로 사용하십시오.

관련 문제