Closing form from another thread

Marek picture Marek · Aug 19, 2013 · Viewed 23k times · Source

I have got this code which runs an .exe

string openEXE = @"C:\Users\marek\Documents\Visual Studio 2012\Projects\tours\tours\bin\Debug\netpokl.exe";
                 Process b = Process.Start(openEXE);
                 b.EnableRaisingEvents = true;
                 b.Exited += (netpokl_Closed);

And when it closes it calls method netpokl_Closed. The issue is when I insert into netpokl_Closed command - this.Close() this exception rises: Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on

How can I fix it ? Thank you for your time and answers.

Answer

Ehsan picture Ehsan · Aug 19, 2013

You are getting the exception because you are trying to close the form from a thread other than on what it was created on. This is not allowed.

do it like this

this.Invoke((MethodInvoker) delegate
        {
            // close the form on the forms thread
            this.Close();
        });