Within a C# Form, I have a function that calls this.Close(), after which the parent reopens the Form. Things work great when this function is called from the click event of a button on the GUI and the Form reopens. About 90% of the time, when this function is called from a different thread such as the clock timer, reopening the Form results in a flash of the frame outline and a clean exit (no errors or exceptions). The call to this.Close() is the last thing in each function.
BTW, the parent creates the Form with: Application.Run(new frmServer());
I tried replacing Close with Dispose, calling Dispose both in the frame and after it returns, putting the call to close directly in the clock tick function instead of calling the common function. There is no difference.