A fundamental problem is that having a resource is no longer a class invariant ( the resource is held from object creation until it is disposed, but the object is still live at this point ), so the resource may not be available when the object tries to use it, for example trying to read from a closed file.