我需要組織一些鎖定當多個線程在未來的代碼架構可以訪問共享資源:C#多線程與DLL(反射)
有一個DLL什麼都有它們的方法(標有一些屬性)通過外部程序進行反思調用。所有這些方法都由該外部程序的幾個線程同時調用。 在這個方法裏面,我們引用了其他方法,它們位於另一個dll中。在另一個我們有其他DLL的方法。 外部運行程序 - (反射)> DLL - > DLL - > DLL
一切順利,直到那一刻,當所有線程開始走在鏈中的最後一個DLL使用相同的資源(訪問郵箱)。 一個嘗試刪除郵件,但另一個已經刪除它等。實際上,我不關心它,如果郵件不存在,可以放入try/catch,但我不想使用此解決方案。
我在考慮添加一些鎖來讀取和刪除操作,並使這種刪除異步方式(我不關心結果,不需要等到它將完成 - 只是清理舊消息),並使用一些代碼如下
lock(someObject)
{
//Access to email and delete old messages
}
但someObject必須在該體系結構(外部運行程序)的頂層聲明,並且此參數必須被認爲是所有鏈。很多工作,我不想這樣做。
此外,我可以把這個鎖在頂部程序什麼運行dll方法,但需要做很多更改,因爲我會失去很多時間,因爲我只能鎖定小部分而不是全部。
其他建議?