one reason could be that object is disposed when you closed first time.
in c# best way to dispose any object is IDisposable pattern. if you do not want to dispose the object which you want to keep it memory for some time then make sure you change the dispose behavior of that object in such case you dispose when their parent is disposed.
Class A : Idiposable
{
public B obj;
void Dispose()
{
obj.Dispose();
}
}
Class B : Idiposable
{
void Dispose()
{
Dispose any third party obj etc. like printview etc.
}
}
you can add more detail if it is not clear. but i have told you the solution in general for any Dispose type of object, this will help you understand Dispose pattern as well.