Как остановить запущенный метод с помощью ввода с клавиатуры в консольном приложении на C #?

Короче говоря, я использую C # для научных вычислений, и я написал метод, который имеет цикл while, который может выполняться с указанным пользователем количеством шагов ... На самом деле , выполнение этого метода может занять слишком много времени (например, более 5 часов). Когда это займет так много времени, я могу остановить метод, нажав, например, клавишу Esc .

Когда я читал кое-что о взломе while , это так же просто, как логический флаг или что-то в этом роде. Итак, я подумал примерно так:

public Double? Run(int n)
{
    int i = 0;
    while ((i < n) && (/* inputkey != ConsoleKey.Escape */))
    {
        // here goes the heavy computation thing
        // and I need to read some "inputkey" as well to break this loop
        i++;
    }
    // I'm not worried about the return statement, as it is easy to do...
    // returns null if the user skipped the method by pressing Escape
    // returns null if the method didn't converged
    // returns the double value that the method calculated otherwise
}

Ну, вот что я думал до сих пор ... Так что, пожалуйста, не могли бы вы дать полезные идеи в этой степени? Как я могу дождаться ввода пользователя (я думал о Events , но я не уверен, как это реализовать здесь, и я думаю, что это сделает код еще медленнее, если мне придется слушать на каждом этапе код переходит в ...

Ну, есть идеи или комментарии?


Обновление : Думаю, мне следовало лучше описать проблему. Все решения, которые вы мне дали, могут решить эту проблему Проблема, которую я предложил, но я думаю, что я не был полностью уверен в моей реальной проблеме. Я не знаю, следует ли мне задать еще один вопрос или придерживаться этого ...

6
задан amiregelz 18 October 2013 в 13:22
поделиться