DotNet:DLL中的静态变量

时间:2012-08-28 08:23:34

标签: c# .net c dll static

我正在开发一个包含DLL的Dot Net项目。此DLL使用.lib(C代码)。不幸的是,这个.lib中有许多静态变量。我在这里遇到的问题:

如果两个用户同时执行搜索,我会收到一个错误,因为他们都访问.lib,其中一个更改了某些内容而其他用户尝试读取数据。

显而易见的解决方案是锁定访问权限,但我真的不想这样做,因为这会大大减慢搜索过程。我宁愿尝试从lib创建一个DLL,但我不知道这是否会解决问题,因为我不知道静态变量是否会单独存储,或者两个搜索进程是否都会访问变量

有没有人有这方面的经验?因为这需要相当长的时间才能完成,我想在开始这样做之前知道它是否有效。

我希望一切都是可以理解的,因为英语不是我的第一语言,而且我的编程技巧非常基础。

1 个答案:

答案 0 :(得分:1)

根据我的理解,当您使用此.dll中的现有类读取数据时,您无法同时编辑数据。很明显,无论你做什么花哨的东西,这都行不通。

您可以做的是创建Thunking Layer。这将是一种将被调用而不是.dll的包装类。此类将通过保存读取数据的本地副本来处理并发I / O请求,并允许对真实数据进行流畅编辑,在完成这些操作时更新本地副本(具有适当的临时锁定等)。可能还有其他标准的方法,我不知道,但这就是我开始的方式。

我希望这会有所帮助。