単純な質問スマソ

開始ボタンをクリック→キャンセルボタンを有効→時間のかかる処理→キャンセルボタンを隠す→処理完了

という部分で、処理の途中でキャンセルボタンを押すと処理を止めるってのを作りたいのですが、
キャンセルボタンを有効にしても処理の方が優先されるのか、処理をしている間、キャンセルボタンが有効にならないんです。
試しに、処理が終わった後にボタンを隠す部分をなくしてみたら、
処理が終わった段階で初めてボタンが有効になるという様でした。・゚・(ノ∀`)・゚・。
Application.DoEvents();
を処理のループの中に入れても無理でしたし・・・

このような場合はどのようにすべきなのでしょうか??