DataSet e DataTable implementam IDisposable, portanto, pelas práticas recomendadas convencionais, devo chamar seus métodos Dispose (). No entanto, pelo que li até agora, o DataSet e o DataTable não possuem recursos não gerenciados, portanto Dispose () não faz muito. Além disso, não posso usar apenas using(DataSet myDataSet...)porque o DataSet possui …
Algo como: using (IDisposable disposable = GetSomeDisposable()) { //..... //...... return Stg(); } Eu acredito que não é um lugar apropriado para uma declaração de retorno, é?
Comece com essas classes simples ... Digamos que eu tenha um conjunto simples de classes como este: class Bus { Driver busDriver = new Driver(); } class Driver { Shoe[] shoes = { new Shoe(), new Shoe() }; } class Shoe { Shoelace lace = new Shoelace(); } class Shoelace …
O .NET IDisposable Pattern implica que, se você escrever um finalizador e implementar IDisposable, seu finalizador precisará chamar explicitamente Dispose. Isso é lógico e é o que eu sempre fiz nas raras situações em que um finalizador é garantido. No entanto, o que acontece se eu apenas fizer isso: class …
Quero desencadear uma tarefa para executar em um thread em segundo plano. Não quero esperar a conclusão das tarefas. No .net 3.5, eu teria feito isso: ThreadPool.QueueUserWorkItem(d => { DoSomething(); }); No .net 4, o TPL é a maneira sugerida. O padrão comum que eu vi recomendado é: Task.Factory.StartNew(() => …
Eu criei um controle de usuário WPF personalizado que se destina a ser usado por terceiros. Meu controle tem um membro privado que é descartável e eu gostaria de garantir que seu método de descarte sempre seja chamado assim que a janela / aplicativo contêiner for fechada. No entanto, UserControl …
Meu problema raiz é que quando usingchama Disposeum StreamWriter, ele também descarta o BaseStream(mesmo problema com Close). Eu tenho uma solução alternativa para isso, mas como você pode ver, envolve copiar o fluxo. Existe alguma maneira de fazer isso sem copiar o fluxo? O objetivo disso é obter o conteúdo …
Tenho o seguinte código using(MemoryStream ms = new MemoryStream()) { //code return 0; } O dispose()método é chamado no final das usingchaves de instrução, }certo? Já que eu returnantes do final do usingenunciado, o MemoryStreamobjeto será descartado corretamente? o que acontece aqui?
Quando eu implementaria IDispose em uma classe em oposição a um destruidor? Eu li este artigo , mas ainda estou perdendo o ponto. Minha suposição é que se eu implementar IDispose em um objeto, posso explicitamente 'destruí-lo' em vez de esperar que o coletor de lixo faça isso. Isso está …
Existe um método, ou alguma outra forma leve, para verificar se uma referência é a um objeto descartado? PS - Isso é apenas uma curiosidade (durma bem, não em código de produção). Sim, eu sei que posso pegar o ObjectDisposedExceptionao tentar acessar um membro do objeto.