これは基本的に、IronPython コンソールが Ctrl-C を処理する方法を適応させたものです。ソースを確認したい場合は、 と にBasicConsoleありCommandLine.Runます。
まず、別のスレッドで IronPython エンジンを起動します (想定どおり)。ユーザーのコードを実行するときは、try ... catch(ThreadAbortException)ブロックでラップします。
var engine = Python.CreateEngine();
bool aborted = false;
try {
    engine.Execute(/* whatever */);
} catch(ThreadAbortException tae) {
    if(tae.ExceptionState is Microsoft.Scripting.KeyboardInterruptException) {
        Thread.ResetAbort();
        aborted = true;
    } else { throw; }
}
if(aborted) {
    // this is application-specific
}
ここで、IronPython スレッドへの参照を手元に置いておく必要があります。フォームにボタン ハンドラーを作成し、 を呼び出しますThread.Abort()。
public void StopButton_OnClick(object sender, EventArgs e) {
    pythonThread.Abort(new Microsoft.Scripting.KeyboardInterruptException(""));
}
このKeyboardInterruptException引数により、Python スレッドは をトラップしThreadAbortExceptionて として処理できKeyboardInterruptます。