I'm trying to hide a form created on the main thread, from a secondary thread but I obviously get a cross-threading issue when I call the hide method. I'm new to this and don't really have a clue as to how to how to correct this. I've always just created a delegate to invoke my method if it's changing stuff created on the main thread, but I don't know how to do that here for the built-in hide method. Let me know if you need more information.

code:

```
public partial class MainForm : Form
{
    ControlPanelForm m_controlPanel = new ControlPanelForm();
    // ....
    void MeterThread()
    {
        while (true)
        {
            // ....
            if (EMOdetected)
            {
                m_controlPanel.Deinitialize();                    
                m_controlPanel.Hide();         // **** //
            }
        }
    }
}

```

Basically, my MainForm pulls up a control panel form that does some work. In the background I have a thread running and checking for stuff, one of which is an Emergency Off, at which point I want to shut my control panel down and then hide it.

If I try to invoke it right there, 

```
m_controlPanel.Invoke(new EMOHandler(m_controlPanel.Hide));    // **** //

```

it doesn't look like it executes anything when i debug it. It seems to just pass over the command. Again, I'm new to this so any and all explanations are welcome.