2011-08-12 73 views
3

我已經構建了一個與JSON服務對話的幫助類。該類在後臺線程中工作。完成後,它會調用客戶端發送的一個Action回撥。.Net:CallBack應該在哪個線程上?

是否最好讓助手類在主UI線程上調用Action回調,或者線程是客戶端的責任?

回答

2

您應該提供完整的同步API,如object Fetch()和明確標記的異步API,如void FetchAsnyc(Callback)。也許你的客戶使用不同的方法來處理多任務,然後他可以用你的同步API來實現這一點。

而UI線程真的不是你的範圍。

0

我會主張有一個異步服務,它可以同時接收和發送數據,這也增加了服務的可靠性。這種方法可以避免在客戶端問題時經常發生的慢速消費者問題,因此服務可以避免這類緩慢/有問題的客戶。

關於UI線程,這是客戶端的責任。基本上客戶端負責在UI線程上發送操作。

編輯:Skomski的答案回憶我,我們最近使用

基本服務提供了諸如以下方法的方法:

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

所以客戶有一個選項是否通過自己的同步上下文,這樣的服務將使用它當調度消息時

synchronizationCOntext.Post(clientCallback, ...); 

或以更直接的方式使用它。

相關問題