Windows Formアプリケーションで時間のかかる処理や計算量の多い処理をするとフォームが固まり、クリックなどのユーザーからの操作に応答しなくなることがあります。
以下の対策があります。
ループ処理の場合、ループ1回ごとにApplication.DoEvents()を呼び出してメッセージキューにたまったウィンドウメッセージを処理する方法です。
backgroundWorkerコントロールを使用して別スレッドで時間のかかる処理を実行します。backgroundWorkerの使い方についてはこちらの記事を参照してください。
C# 5.0以降では、非同期メソッドが利用できます。非同期メソッドを利用するとUIのメインスレッドと非同期で処理を実行でき、UIのフリーズを防げます。
実装コードはこちらの記事を参照してください。