Avez-vous besoin de disposer des objets et de les mettre à zéro, ou le garbage collector les nettoiera-t-il lorsqu'ils sortiront du champ d'application?
Pourquoi certaines personnes utilisent-elles la Finalizeméthode plutôt que la Disposeméthode? Dans quelles situations utiliseriez-vous la Finalizeméthode plutôt que la Disposeméthode et vice versa?
DataSet et DataTable implémentent tous deux IDisposable, donc, selon les meilleures pratiques conventionnelles, je devrais appeler leurs méthodes Dispose (). Cependant, d'après ce que j'ai lu jusqu'à présent, DataSet et DataTable n'ont en fait aucune ressource non gérée, donc Dispose () ne fait pas grand-chose. De plus, je ne peux …
Quelque chose comme: using (IDisposable disposable = GetSomeDisposable()) { //..... //...... return Stg(); } Je crois que ce n'est pas un endroit approprié pour une déclaration de retour, n'est-ce pas?
Commencez par ces classes simples ... Disons que j'ai un simple ensemble de classes comme celui-ci: class Bus { Driver busDriver = new Driver(); } class Driver { Shoe[] shoes = { new Shoe(), new Shoe() }; } class Shoe { Shoelace lace = new Shoelace(); } class Shoelace { …
Le modèle .NET IDisposable implique que si vous écrivez un finaliseur et implémentez IDisposable, votre finaliseur doit appeler explicitement Dispose. C'est logique, et c'est ce que j'ai toujours fait dans les rares situations où un finaliseur est justifié. Cependant, que se passe-t-il si je fais juste ceci: class Foo : …
Je souhaite déclencher une tâche à exécuter sur un thread d'arrière-plan. Je ne veux pas attendre la fin des tâches. Dans .net 3.5, j'aurais fait ceci: ThreadPool.QueueUserWorkItem(d => { DoSomething(); }); Dans .net 4, le TPL est la méthode suggérée. Le modèle commun que j'ai vu recommandé est: Task.Factory.StartNew(() => …
J'ai créé un contrôle utilisateur WPF personnalisé destiné à être utilisé par un tiers. Mon contrôle a un membre privé qui est jetable, et je voudrais m'assurer que sa méthode dispose sera toujours appelée une fois que la fenêtre / l'application contenant est fermée. Cependant, UserControl n'est pas jetable. J'ai …
Mon problème fondamental est que lorsque vous usingappelez Disposea StreamWriter, il élimine également le BaseStream(même problème avec Close). J'ai une solution de contournement pour cela, mais comme vous pouvez le voir, cela implique de copier le flux. Existe-t-il un moyen de le faire sans copier le flux? Le but de …
J'ai le code suivant using(MemoryStream ms = new MemoryStream()) { //code return 0; } La dispose()méthode est appelée à la fin des usingaccolades, }non? Puisque j'ai returnavant la fin de la usingdéclaration, l' MemoryStreamobjet sera-t-il éliminé correctement? Que se passe t-il ici?
Quand est-ce que j'implémenterai IDispose sur une classe par opposition à un destructeur? J'ai lu cet article , mais je manque toujours le point. Mon hypothèse est que si j'implémente IDispose sur un objet, je peux explicitement le «détruire» plutôt que d'attendre que le garbage collector le fasse. Est-ce correct? …
Existe-t-il une méthode, ou un autre moyen léger, pour vérifier si une référence est à un objet supprimé? PS - C'est juste une curiosité (dormez bien, pas dans le code de production). Oui, je sais que je peux attraper le ObjectDisposedExceptionen essayant d'accéder à un membre de l'objet.
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.