Question: I'm having 2 forms. From one form I created and shown the other form. It's working great. But when I try to close or Dispose that form from the form that created it I get following Exception:

```

Exception :
   Value Dispose() cannot be called while doing CreateHandle().

Stack Trace :
========================
   at System.Windows.Forms.Control.Dispose(Boolean disposing)
   at System.Windows.Forms.Label.Dispose(Boolean disposing)
   at System.ComponentModel.Component.Dispose()
   at System.Windows.Forms.Control.Dispose(Boolean disposing)
   at System.Windows.Forms.ContainerControl.Dispose(Boolean disposing)
   at System.Windows.Forms.Form.Dispose(Boolean disposing)
   at Speedometer_Application.frmSpeedometer.Dispose(Boolean disposing) 

```

Any idea????

Answer: 
The error `Value Close() cannot be called while doing CreateHandle()` usually happens when we try to close the form in the constructor or Load event.

For example, the following code gives the error:

```
private void frmCustomer_Load(object sender, EventArgs e)
{
 if (!Valid())
  this.Close;
}

```

The Solution:

```
private void frmCustomer_Load(object sender, EventArgs e)
{
 if (!Valid())
  this.BeginInvoke(new MethodInvoker(Close));
} 

```

You can use this in your code.
You need to use **ShowDialog** instead of **Show** thats the problem. Show dont block the application and the code keeps running.

You are disposing the object when the GUI is creating it (that what the exception said)

Try with this:

```
if (frmMain.objfrm== null)
{   
     frmMain.objfrm = frmMyForm.Instance;     
     frmMain.objfrm.ShowInTaskbar = false;    
}
frmMain.objfrm.ShowDialog();

```

Note the **ShowDialog**()