我正在开发一个DotNet项目,其中包括一个DLL。该DLL使用.lib(C代码)。不幸的是,这个.lib中有很多静态变量。我在这里遇到的问题:DotNet:DLL中的静态变量
如果两个用户同时执行搜索,则会出现错误,因为他们都访问.lib,而其他人尝试读取数据时会发生变化。
显而易见的解决方案是锁定访问权限,但我真的不想这样做,因为这会大大降低搜索速度。我宁愿尝试从lib中创建一个DLL,但我不知道这是否可以解决问题,因为我不知道静态变量是否将单独存储,或者如果两个搜索进程都将访问相同变量。
有没有人有这方面的经验?因为这样做需要相当长的时间,并且我想知道在我开始执行此操作之前它是否有效。
我希望一切都可以理解,因为英语不是我的第一语言,而且我的编程技巧很基础。
您*应*避免过多使用* static *字段。尝试改变*类型*设计。 – adatapost
问题是,C代码充满了静态,改变一切将花费太长的时间。我看到的唯一快速替代方法是尝试使用这个DLL“技巧”。 – Stefan
@Stefan:在一个新的程序集中定义一个新类型,该程序可以访问该C代码(并且只有它),换句话说就是一个包装器。从这种类型的Adn中,按照您想要的方式管理对C资源的独占访问。所以,如果你想调用一些C函数,你必须使用这种类型,如果你将在执行中调用一些东西,相同的类型将阻止你,引发异常,显示消息..不管。 – Tigran