You have to ask some UI-Thread element whether or not invoking is required, and let it do the invoking.
That's because you created
Alert_Window on another thread.
MSDN explains
[Control.Invoke] gets a value indicating whether the caller must call an invoke method when making method calls to the control because the caller is on a different thread than the one the control was created on.
Change your code to something like
public static void ThreadWinForm()
{
Alert_Window aw = new Alert_Window();
if (Form1.InvokeRequired) Form1.Invoke((MethodInvoker)delegate()
{
aw.Show();
});
else
{
aw.Show();
}
}
With "Form1" being any control that you know lives in the UI thread.