2014-01-05 2 views
0

Я хочу, чтобы, нажав «бутон», затем закончить то, что делает в данный момент. Сначала я нажимаю кнопку для выполнения некоторых вычислений, она заканчивается между 3 или 4 минутами, и я хочу, чтобы нажатие кнопки могло закончиться, но программа еще не закончила работу. Как мне это сделать?Как закончить действие функции?

ответ

0

Предполагая, что вы написали функцию, которая повторяющий себя, и вы хотите, чтобы функция, чтобы остановить то, что он делает ...

Вы могли бы написать код для «Бутон», что он установит логическое значение ИСТИНА.

Private _MustTheFunctionStop, как булевы = ложь

Установите это логическое значение в качестве глобального поля в классе так что ваша функция может Acces булевой тоже.

Когда вы нажмете на свою кнопку, установите значение boolean равным TRUE.

Затем в функции вам нужно цикл код

сделай время должны сделать трюк

> public function SomeCalculations 
> 
> do while MustTheFunctionStop = false 
> 
> /your code.../ 

конец функции

+1

Это не будет работать. Пользовательский интерфейс не будет реагировать, пока выполняется SomeCalculations – Paparazzi

0

Используйте нитки (чистые нитки, фонаря или что-нибудь еще).
Кнопка запуска запускает только поток и возвращает управление графическим интерфейсом,
, чтобы получить промежуточные результаты, вам понадобится некоторая синхронизация
, и для завершения потока перед этим она также будет завершена.

0

Использование BackgroundWorker и SupportsCancellation

В делать проверку работы на CancellationPending
Если делать работу не имеет петлю, то есть не хороший способ, чтобы отменить

BackgroundWorker.CancellationPending Property

Смежные вопросы