Sto lavorando a un progetto DotNet, che include una DLL. Questa DLL utilizza un .lib (codice C). Sfortunatamente, ci sono molte variabili statiche in questo .lib. Il problema che ho qui:DotNet: variabili statiche nella DLL
Se due utenti eseguono una ricerca allo stesso tempo, visualizzo un errore, perché entrambi accedono a .lib, uno cambia qualcosa mentre altri tenta di leggere i dati.
La soluzione ovvia, sarebbe quella di bloccare l'accesso, ma io davvero non voglio farlo, perché questo rallenta drasticamente il processo di ricerca. Preferirei provare a creare una DLL dalla lib, ma non so se questo risolverà il problema, in quanto non so se le variabili statiche verranno quindi memorizzate separatamente, o se entrambi i processi di ricerca accederanno allo stesso variabili.
Qualcuno ha esperienza con questo? Perché ci vorrà un bel pò di tempo per farlo, e mi piacerebbe sapere se funziona prima di iniziare a farlo.
Spero che tutto sia comprensibile, in quanto l'inglese non è la mia prima lingua e le mie capacità di programmazione sono piuttosto elementari.
Si * dovrebbe * evitare l'uso eccessivo di campi * statici *. Prova a cambiare * Tipo * design. – adatapost
Il problema è che il codice C è pieno di statiche, ci vorrebbe troppo tempo per cambiare tutto. L'unica alternativa veloce che vedo, sta provando questo "trucco" della DLL. – Stefan
@Stefan: definisce un nuovo tipo in un nuovo assembly che ha accesso a quel codice C (e solo a esso), in altre parole un wrapper per esso. Adn da quel tipo, gestisci l'accesso esclusivo alle risorse C nel modo desiderato. Quindi, se vuoi chiamare qualche funzione C, devi usare quel tipo, e se chiamerai qualcosa nella parte centrale dell'esecuzione, lo stesso tipo ti bloccherà, genererà un'eccezione, mostrerà un messaggio .. qualunque sia. – Tigran