Estoy trabajando en un proyecto de Dot Net, que incluye una DLL. Esta DLL usa un .lib (código C). Desafortunadamente, hay muchas variables estáticas en este .lib. El problema que tengo aquí:DotNet: variables estáticas en DLL
Si dos usuarios realizan una búsqueda al mismo tiempo, me sale un error, porque ambos acceden a .lib, uno cambia algo mientras que otros intentan leer datos.
La solución obvia sería bloquear el acceso, pero realmente no quiero hacer eso, porque eso ralentiza drásticamente el proceso de búsqueda. Preferiría intentar hacer una DLL desde la lib, pero no sé si esto resolvería el problema, ya que no sé si las variables estáticas se almacenarán por separado, o si ambos procesos de búsqueda tendrán acceso al mismo variables.
¿Alguien tiene experiencia con esto? Porque tomará bastante tiempo hacer esto, y me gustaría saber si funciona antes de comenzar a hacer esto.
Espero que todo sea comprensible, ya que el inglés no es mi primer idioma, y mis habilidades de programación son bastante básicas.
Usted * debe * evitar el uso excesivo de los campos * estáticos *. Intenta cambiar el diseño * Type *. – adatapost
El problema es que el código C está lleno de estática, tomaría demasiado tiempo cambiarlo todo. La única alternativa rápida que veo es ATM, está probando este "truco" de DLL. – Stefan
@Stefan: defina un nuevo tipo en un nuevo conjunto que tenga acceso a ese código C (y solo a él), en otras palabras, un contenedor para él. Adn desde ese tipo, administre el acceso exclusivo a los recursos de C de la manera que desee. Entonces, si quieres llamar a alguna función C, tienes que usar ese tipo, y si llamas a algo en mitad de la ejecución, el mismo tipo te bloqueará, generará una excepción, mostrará un mensaje ... lo que sea. – Tigran