Вы можете использовать силу Линка:
return new string(tocheckTextBox.Where(c => !char.IsNumber(c)).ToArray())
Потенциально очень плохо.
Прерванный поток мог оставить общее состояние поврежденным, мог оставить асинхронное операционное выполнение...
См. блог Joe Duffy: "Управляемый код и асинхронное укрепление исключения".
В основном Вы говорите о прерывании действия, которое (насколько мы знаем) не имеет никакого корректного способа прерваться.
Это означает, там не будет никаким безопасным способом прервать его. Thread.Abort
просто не хорошая вещь сделать - существуют различные условия состязания и ужасные ситуации, в которые можно войти (см. ссылку в ответе Richard). Я попытался бы отчаянно трудно постараться не желать отменить действия, которые не знают об отмене - и если абсолютно необходимо сделать это, рассмотреть перезапуск целого приложения впоследствии, поскольку Вы больше не можете быть в нормальном состоянии.
Это плохо, потому что поток мог бы быть в непоследовательном состоянии или посреди некоторой работы и не иметь возможность разрешить себя.
Для закрытия его правильно Вы предупреждаете, чтобы это остановило то, что это делает путем вызова метода или установки свойства, затем Распараллельте. Соединение для ожидания, пока это не закрывается прежде, чем закрыть приложение или перейти на другие задачи.