Хм.. Окно блокироваться не должно, но может просто не реагировать на внешние раздражители, если прилаге не хватает времени на обработку действий пользователя, когда активен поток наведения.
Если это так, то можно снизить приоритет вспомогательного потока до Idle.
Кстати, код можно написать гораздо компактней:
delegate void ReadPlanDelegate();
private void button4_Click(object sender, EventArgs e)
{
new Thread(delegate()
{
Thread.CurrentThread.IsBackground = true;
Invoke(new ReadPlanDelegate(ReadPlan), new object[0]);
}).Start();
}
Кстати, потоки неплохо бы делать фоновыми. Но это отдельная история.