Domanda

Può Visual Studio 2008 essere configurato per darmi un avvertimento quando mi dimentico di smaltire un oggetto che implementa IDisposable?

È stato utile?

Soluzione

Visual Studio, di per sé non hanno questa caratteristica, ma con CodeRush si può avere avvertimenti tempi di progettazione e refactoring per inserire utilizzando blocchi dove necessario.

Altri suggerimenti

Se si accende FxCop design governa vi dirà quando non implementare IDisposable e si dispone di organi che realizzano IDisposable, in questo modo:

class Program
{
    private DataTable NotDisposed;

    public Program()
    {
        NotDisposed = new DataTable();
    }
    static void Main()
    {
    }
}

Non credo che può essere fatto in fase di compilazione.

tuttavia, può essere fatto in fase di esecuzione.
Ho creato una classe astratta 'usa e getta' (che implementa IDisposable, e implementa il modello usa e getta). Nel finalizzatore, ho emettere un Assert quando il finalizzatore viene chiamato, e l'oggetto non è stato eliminato.

Ho basato questo su un articolo di Ian Griffiths:

http://www.interact-sw.co .uk / iangblog / 2004/04/26 / yetmoretimedlocking

Non sono sicuro se si sta utilizzando C # o VB, ma in C #, il modo "best practice" per gestire oggetti di tipo IDisposable è quello di mettere il codice in un blocco utilizzando.

"L'istruzione using permette al programmatore di specificare quando oggetti che utilizzano le risorse loro dovrebbe rilasciare. L'oggetto fornito per l'istruzione using deve implementare l'interfaccia IDisposable. Questa interfaccia fornisce il metodo Dispose, che dovrebbe liberare risorse dell'oggetto." - MSDN link

HTH,

-Dan

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top