Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 752307
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T14:45:59+00:00 2026-05-14T14:45:59+00:00

Certainly we should call Dispose() on IDisposable objects as soon as we don’t need

  • 0

Certainly we should call Dispose() on IDisposable objects as soon as we don’t need them (which is often merely the scope of a “using” statement). If we don’t take that precaution then bad things, from subtle to show-stopping, might happen.

But what about “the last moment” before process termination? If your IDisposables have not been explicitly disposed by that point in time, isn’t it true that it no longer matters? I ask because unmanaged resources, beneath the CLR, are represented by kernel objects – and the win32 process termination will free all unmanaged resources / kernel objects anyway. Said differently, no resources will remain “leaked” after the process terminates (regardless if Dispose() was called on lingering IDisposables).

Can anyone think of a case where process termination would still leave a leaked resource, simply because Dispose() was not explicitly called on one or more IDisposables?

Please do not misunderstand this question: I am not trying to justify ignoring IDisposables. The question is just technical-theoretical.

EDIT: And what about mono running on Linux? Is process termination there just as “reliable” at cleaning up unmanaged “leaks?”

LATE EDIT: Although “other uses” may exist for IDisposables, my focus is strictly on resource leaks. I’ve heard two answers: (1) if your process refuses to terminate, you will have a leak and (2) yes, resources can leak even if the process terminates. I certainly agree with item (1), though it is just outside the scope of what I’m after. Otherwise, item (2) is exactly what i’m looking for, but I can’t shake the feeling it is just a guess. Jeffrey Richter (“Windows via C/C++”) explains that a (gracefully) terminated Win32 process will not leave leaked or orphaned resources. Why would a process containing the CLR change that? Where is the documentation, specific example, or theoretical scenario that gives credance to the idea that the Win32 process cleanup capability is compromised when using the CLR?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T14:45:59+00:00Added an answer on May 14, 2026 at 2:45 pm

    Technically speaking, it all depends on what the IDisposable does. It has been used for a lot of things, not just unmanaged resources.

    For example, when working on an Outlook application I had built a nice little abstraction of the Outlook API. Attachments were particularly annoying to work with as streams because you needed to save it out to a temp file, work with it, then clean it up.

    So my abstraction looked something like this:

    OutlookMailItem mailItem = blah;
    using (Stream attachmentStream = mailItem.OpenAttachment("something.txt")) {
       // work with stream
    }
    

    When Dispose was called on the AttachmentStream, the temp file it was based on was deleted. In this case, if Dispose was not called, the temp file would never be cleaned up. I had a process at startup to look for these orphaned files but I figured I’d present this as an example.

    In reality, nearly all IDisposable implementations which wrap some kind of socket, handle, or transaction will simply be cleaned up by the operating system upon process termination. But obviously that’s like welfare. Avoid it if you can.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I've got a few methods that should call System.exit() on certain inputs. Unfortunately, testing
We have 18 databases that should have identical schemas, but don't. In certain scenarios,
As I don't use vi all that much and certainly not for my primary
I have a Users table and a Payments table. I need a query which
I don't use T4 templates often; usually when I do it is editing those
I have a method which I am testing. Given certain inputs, it should write
Certainly there's the difference in general syntax, but what other critical distinctions exist? There
Resharper certainly thinks so, and out of the box it will nag you to
Visual Studio has certainly gone from strength to strength since humble Visual Studio 6
Anyone who has programmed with actionscript 3.0 has most certainly noticed its lack of

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.