我需要组织一些锁定当多个线程在未来的代码架构可以访问共享资源:C#多线程与DLL(反射)
有一个DLL什么都有它们的方法(标有一些属性)通过外部程序进行反思调用。所有这些方法都由该外部程序的几个线程同时调用。 在这个方法里面,我们引用了其他方法,它们位于另一个dll中。在另一个我们有其他DLL的方法。 外部运行程序 - (反射)> DLL - > DLL - > DLL
一切顺利,直到那一刻,当所有线程开始走在链中的最后一个DLL使用相同的资源(访问邮箱)。 一个尝试删除邮件,但另一个已经删除它等。实际上,我不关心它,如果邮件不存在,可以放入try/catch,但我不想使用此解决方案。
我在考虑添加一些锁来读取和删除操作,并使这种删除异步方式(我不关心结果,不需要等到它将完成 - 只是清理旧消息),并使用一些代码如下
lock(someObject)
{
//Access to email and delete old messages
}
但someObject必须在该体系结构(外部运行程序)的顶层声明,并且此参数必须被认为是所有链。很多工作,我不想这样做。
此外,我可以把这个锁在顶部程序什么运行dll方法,但需要做很多更改,因为我会失去很多时间,因为我只能锁定小部分而不是全部。
其他建议?