簡體   English   中英

第三方DLL引發事件

[英]3rd party dll raising events

我使用第三方dll從其服務器獲取一些數據。 我調用了一個void方法,然后我訂閱了對此方法的調用引發的事件。 引發的事件通過其參數返回數據。

因此,調用:void getdata(id)會引發:void onReturn(object)->返回具有數據的對象。

每當有一次對getdata(id)的調用時,此方法都起作用

問題是當我遍歷id列表時,在該列表的循環調用getdata(id)內,相應的事件未正確引發。 假設有10個ID的列表,則有10個對getdata(id)的調用,但只引發了很少的onReturns。

返回的對象還返回傳遞給getdata(id)的id,以便我可以匹配發送的數據和接收的數據。

有沒有辦法確保所有事件都被監聽? 因此,如果我通過getdata(id)發送10個ID,則要確保已處理10個onReturns。

我正在使用C#、. net 4.0

謝謝

如果它是第三方DLL,則不會告訴他們它們是如何實現的。 當您進入調試模式時,是否在調用onReturn()偵聽器之前onReturn()getData()的調用? 如果是這樣,它可能在內部使用線程(或至少是異步偵聽器),並且將多個getData()得太近可能會導致它在待處理的響應上腳。

我想嘗試解決的唯一方法是自己使用多線程,例如使用Mutex,該Mutex在調用getData()之后等待並在onReturn()事件中釋放。 這樣,您一次只會收到一個未解決的請求,這似乎是對您有效的條件。

編輯:您是否已經與第三方供應商討論過此事? 我想如果您首先想到我們,他們的支持並不是最好的,但是值得一試。

編輯第二個:當您說它從他們的服務器獲取數據時,這是否意味着它通過網絡發出請求? 如果這些請求未加密,那么您可以對協議進行反向工程並為自己創建一個新的API,而不必依賴經過驗證的越野車。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM