我有一個Web服務實例化對象,訂閱該對象上的事件,然後調用該對象上的一個函數,這將導致事件被觸發。有沒有辦法等待事件觸發,以便我可以從EventArgs中獲取結果,以便將這些結果作爲Web服務的結果傳遞給它?如何從WCF Web服務中監聽對象上的事件?
回答
您將需要某種與事件處理程序中獲取信號的事件(例如ManualResetEventSlim)關聯的同步原語。然後您的請求線程可以等待事件並在事件發生後收集結果並生成響應
但是,更自然的模型可能是將服務創建爲異步服務,並且只能在異步服務時完成處理操作完成 - 我創建了a sample of this一會兒回
這聽起來類似於我在這裏找到的:http://stackoverflow.com/questions/475617/wrapping-an-asynchronous-method-synchronously-in-c-sharp但使用AutoResetEvent。 AutoResetEvent,ManualResetEvent和ManualResetEventSlim有什麼區別? – adam0101
AutoResetEvent和ManualResetEvent是底層內核對象的包裝,而ManualResetEventSlim是一個完全託管的事件(所以更輕量化)。但ManualResetEventSlim僅在.NET 4.0中可用。服務員喚醒後,AutoResetEvents會將自己重置爲無信號。手動事件必須手動重置 –
- 1. WCF監聽服務總線
- 2. WCF服務監聽器
- 3. 聽某些事件(對象監聽器)
- 4. Ember.js如何監聽從服務器發起的事件?
- 5. 對象,要求對事件監聽
- 6. javascript對象的jquery事件監聽器
- 7. Android服務監聽觸摸事件
- 8. 如何在IIS下託管服務時爲WCF ServiceHost事件創建監聽器?
- 9. 如何在java中切換對象與事件監聽器?
- 10. 如何監聽postbin上的事件並從中獲取值?
- 11. Web服務 - 沒有端點監聽
- 12. 單身人士對象上的骨幹事件監聽器
- 13. 停止監聽或刪除Image()對象onload事件的事件
- 14. WCF服務如何與IIS監聽相同的端口?
- 15. 服務如何監聽觸摸手勢/事件?
- 16. ZF2 - 如何監聽事件並因此觸發服務?
- 17. Web服務或API over數據庫更改中的監聽事件
- 18. 從WCF Web服務
- 19. 在Angular服務中測試事件監聽器的輸出
- 20. 從tableviewcell監聽事件
- 21. Spotify web-api暫停事件監聽器
- 22. 在隊列上監聽Windows Server Service Bus(WSSB)1.1的WCF服務
- 23. NHibernate的保存/更新事件監聽器:監聽子對象節省
- 24. 如何在WCF Web服務中返回對象?
- 25. Web服務的PostConstruct servlet上下文監聽器的contextInitialized
- 26. 事件監聽器?
- 27. Laravel監聽器監聽多個事件
- 28. jQuery事件監聽
- 29. WCF Web服務上的System.OutOfMemoryException
- 30. 如何在Javascript中監聽Tapped事件
是方法的調用和事件的觸發同步還是異步? –
它們是異步的 – adam0101
也就是說,在對象上調用方法會啓動一個異步進程,最終完成並觸發事件。這是你的意思嗎? – adam0101