Problema Lettura informazioni assembly

lunedì 16 febbraio 2009 - 16.42

AntCiar Profilo | Expert


Salve a tutti. Utilizzo il codice sottostante per leggere la versione di un determinato file.
La cosa funziona perfettamente. Il problema è che dopo aver letto l'informazione, il file rimane bloccato. Infatti se provo a sostituirlo o modificarlo mi da l'eccezione "impossibile accedere al file .... perchè in uso da un altro processo". Come si vede dal codice, gli oggetti creati per la lettura vengono tutti sistrutti tramite il "null". Come posso fare per risolvere questo problema?

Grazie a tutti.

-------------------------------------------------------
Assembly ass = Assembly.LoadFile(PathFile);
if (ass != null)
{
try
{
object[] afv = ass.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false);
string IdVersion = Convert.ToString("" + ((AssemblyFileVersionAttribute)afv[0]).Version).Replace(".", "");
res = Int32.Parse(IdVersion);
afv = null;
}
catch (Exception)
{
}
}
ass = null;
------------------------------------

aiedail92 Profilo | Expert

Ciao

Puoi risolvere facendo caricare l'assembly dai dati binari del file anzichè dal file stesso, leggendoli te in anticipo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Volevo comunque ricordare che assegnare un valore null ad una variabile non ti garantisce che l'oggetto venga distrutto immediatamente, infatti l'operazione verrà eseguita solo quando sarà ritenuto necessario dal Garbage Collector. Quando è possibile, per forzare il rilascio delle risorse bisogna usare il metodo Dispose delle classi che derivano dall'interfaccia IDisposable.

Luca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5