私はJasonと全体的に同意します - ハックや一時的な修正は、プログラムの「機能」になるという厄介な癖があります。
しかし、あなたの質問に答えるために、私はあなたの計算が実行されている間、目的の機能を無効にするプログラムで無効フラグを持つことをお勧めします。次に、イベントハンドラにフラグのチェックを入れます:
public bool DisableFlag { get; set; }
public void MyKeyEventHandler(object sender, EventArgs e)
{
if (DisableFlag)
{
return;
}
// Do stuff
}
希望に役立ちます。
乾杯、
Chris。
EDIT:
ケンのコメントを考えると、これは真実である、イベントがキューに入れられますし、それだけでいくつかのイベントを通じ、出血している限り、有用であろう。だから、他のオプションは
myControl =- MyKeyEventHandler;
と計算が終了した後、
myControl =+ MyKeyEventHandler;
を行うことによって完全にさえハンドラを無効にすることです。この方法では、イベントはキューに入れられず、Kenが説明したように問題を回避します。
実際の問題(一時的なものは永久的になる)を修正して、計算をapbackgrounfスレッドに入れてください。タスク並列ライブラリを使用するのは本当に簡単です:http://msdn.microsoft.com/en-us/library/dd537609.aspx – Jason
計算をBackgroundWorkerに移動して、フォームを無効にするだけで、完了コールバックが実行される育った? – dmay