IDisposable est une interface au sein de la bibliothèque de classes de base (BCL) de Microsoft .NET Framework. Il est destiné à fournir une méthode générique et déterministe de libération de ressources non managées dans le code d'application .NET.
Je sais de la lecture de la documentation Microsoft que l'utilisation "principale" de l' IDisposableinterface est de nettoyer les ressources non gérées. Pour moi, signifie « non gérés » des choses comme les connexions de base de données, prises, poignées de fenêtres, etc. Mais, j'ai le code vu où la …
C # 2008 J'y travaille depuis un certain temps maintenant, et je suis toujours confus quant à l'utilisation des méthodes de finalisation et d'élimination dans le code. Mes questions sont ci-dessous: Je sais que nous n'avons besoin que d'un finaliseur pour disposer de ressources non gérées. Cependant, s'il existe des …
System.Net.Http.HttpClient et System.Net.Http.HttpClientHandler dans .NET Framework 4.5 implémentent IDisposable (via System.Net.Http.HttpMessageInvoker ). La usingdocumentation de la déclaration indique: En règle générale, lorsque vous utilisez un objet IDisposable, vous devez le déclarer et l'instancier dans une instruction using. Cette réponse utilise ce modèle: var baseAddress = new Uri("http://example.com"); var cookieContainer = …
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?
Est-il sûr d'utiliser l' usinginstruction sur un objet (potentiellement) nul? Prenons l'exemple suivant: class Test { IDisposable GetObject(string name) { // returns null if not found } void DoSomething() { using (IDisposable x = GetObject("invalid name")) { if (x != null) { // etc... } } } } Est-il garanti …
Classes telles que Stream, StreamReader, StreamWriteretc outils IDisposableinterface. Cela signifie que nous pouvons appeler la Dispose()méthode sur les objets de ces classes. Ils ont également défini une publicméthode appelée Close(). Maintenant, cela me trouble, que dois-je appeler une fois que j'ai fini avec les objets? Et si j'appelle les deux? …
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 : …
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?
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.