I think, as indicated in the running comments, that this is indeed a threading issue. Invoke to the UI thread before creating Form3. Check the InvokeRequired and Invoke
private void p1_Exited(object sender, EventArgs e)
{
if (this.InvokeRequired)
{
this.Invoke(new Action(OnProcessExited));
}
else
{
OnProcessExited();
}
}
private void OnProcessExited()
{
Form3 f3 = new Form3();
f3.Show();
this.Hide();
}