Есть программа, написанная на C#, Windows.Form.
Какой встроенной функцией мне прекратить выполнение программы?
Важно: необходимо не завершить процесс, а именно прекратить, чтобы можно было дальше работать с программой. Пробовал функции exit() и System.Threading.Thread.CurrentThread.Abort() — после выполнения функций происходило закрытие формы.
Отслеживать
11 1 1 золотой знак 2 2 серебряных знака 8 8 бронзовых знаков
задан 19 дек 2014 в 20:06
МаринаВоин МаринаВоин
898 5 5 серебряных знаков 10 10 бронзовых знаков
>Важно: необходимо не завершить процесс, а именно прекратить. Что бы можно было дальше работать с программой Эмм..это как?
19 дек 2014 в 20:15
Смотри, при вызове команды exit() идет закрытие программы(Windows Forms). А мне надо не закрывать, а просто закончить выполнение всех функций.
19 дек 2014 в 20:18
Извините конечно, но вы сами-то понимаете, чего хотите? Нет такого понятия как «закончить выполнение всех функций». Программа (и соответствующий ей процесс) либо запущена и работает, либо не запущена, и, соответсвенно, не работает. Выполняет ли она при этом какие-то действия или нет — это уже зависит от логики программы, нет такой волшебной функции, которая заставила бы программу магическим образом корректно завершить свою внутреннюю логику и при этом остаться в памяти.
AVR 11# Прерывания
19 дек 2014 в 20:27
Вы, конечно, можете сделать Thread.Sleep или Suspend, но эти методы лишь приостанавливают текущий поток, а не «заканчивают выполнение всех функций». При этом ваша программа просто зависнет
Источник: ru.stackoverflow.com
15. Прерывание выполнения Программы
Вы можете прервать вашу программу, используя функцию abort. Прототип для этой функции находится в » stdlib.h «.
void abort (void) (функция)
Функция abort вызывает аварийное окончание программы. Она не выполняет функции очистки, зарегистрированные с atexit или on_exit.
Эта функция фактически завершает процесс, вызывая сигнал SIGABRT, и ваша программа может включать обработчик, чтобы прервать этот сигнал; см. Главу 21 [Обработка Сигнала].
16. Внутренняя организация Окончания
Функция _exit — примитив, используемый для окончания процесса exit. Она объявлена в заглавном файле » unistd.h «.
void _exit (int status) (функция)
_exit — функция для завершения процесса с состоянием status. Вызов этой функции не выполняет функции очистки, зарегистрированные с atexit или on_exit.
Когда процесс завершается по любой причине либо явным запросом окончания, либо окончанием в результате сигнала, производятся следующие действия:
Все описатели открытого файла в процессе будут закрыты. См. Главу 8 [Ввод — вывод низкого уровня].
Windows Powershell: Что это и как использовать? Основные команды ️⚙️
8 битов младшего разряда возвращающегося кода состояния сохранены, для передачи родительскому процессу через wait или waitpid; см. Раздел 23.6 [Завершение Процесса].
Любым дочерним процессам завершаемого процесса будет назначен новый родительский процесс. (Это — init процесс, с ID процесса 1.)
Сигнал SIGCHLD послан родительскому процессу.
Если, процесс является лидером сеанса, который контролировал терминал управления, то сигнал SIGHUP будет послан каждому процессу в приоритетной работе, и терминал управления — будет отсоединен от этого сеанса. См. Главу 24 [Управление заданиями].
Если окончание процесса останавлвает любой элемент группы этого процесса, то сигнал SIGHUP и сигнал SIGCONT будет послан каждому процессу в группе.
17. Ввод/вывод файлов с помощью командной строки.
До сих пор наши программы могли только принимать символы с клавиатуры и высвечивать их на экране монитора. Они как бы находились в заточении и могли лишь перестукиваться с соседом по камере, в то время как огромный и прекрасный внешний мир оставался недоступен. Настало время вышибить тюремную дверь и соединиться с миром файлов, откуда программа берет необходимую информацию и куда возвращает результаты своей работы.
Файлами, как вы знаете, называется то, что очень быстро забивает жесткий диск любого размера. У каждого файла есть имя, обычно состоящее из букв, разделенных точками, например: sort.c , dog.jpg и т.д. Буквы, стоящие правее последней точки, называются расширением и по ним часто можно узнать, информация какого вида хранится в файле. Так, расширение .jpg обычно бывает у файлов, хранящих изображения, а расширение .c говорит о том, что это исходный текст программы на Си.
И наш первый опыт работы с файлами как раз и будет связан с этими исходными текстами. Дело в том, что при отладке программ программистам необходимо многократно просматривать исходные тексты, и чем больше строк удается увидеть, тем лучше. Для просмотра подходят редакторы Блокнот (Notepad) и улучшенный Notepad — Ecopad32.
В них можно выбрать более мелкий шрифт и читать столько строк текста, сколько удастся разглядеть. Но, к сожалению, текст в этих редакторах прижимается к левому краю экрана, что затрудняет чтение, а отодвинуть его вправо нет возможности. Поэтому была бы полезна программа, которая читает исходный текст на Си, сдвигает его вправо и записывает в другой файл. Чтобы написать ее, нужно научиться работать с файлами, что совсем не сложно.
Программа на языке Си общается с файлом с помощью специальной переменной — указателя файла, которая объявляется как
То есть, формально создается указатель на тип FILE, которому нужно присвоить определенное значение функцией fopen():
где «режим» определяет характер работы с файлом, а «имя» должно должно быть именем реального файла, иначе функция fopen() возвратит NULL. Соединение программы с файлом может выглядеть так:
in = fopen(«имя», «rb»);
Режим «rb» означает, что файл открывается только для чтения (r) (в целях безопасности) и рассматривается как бинарный (b), то есть воспринимается «как есть» со всем своим содержимым. После успешного открытия файла программа получает в свое распоряжение переменную in, которая передается как параметр различным функциям.
В этом разделе нас будут интересовать две функции, работающие с файлами: функция, читающая строку из файла и функция, записывающая строку в файл.
Но прежде чем переходить к знакомству с ними, нужно, пожалуй, сделать небольшое отступление и рассказать о том, что текстовые файлы, к которым относятся и тексты программ, состоят из отдельных строк. Каждая строка заканчивается специальными символами, которые показывают программе просмотра (такой как Блокнот), что следующие символы нужно показывать с новой строки. В разных системах символы окончания строки разные, но в DOS и Windows строку завершают два невидимых байта 0D0A (в шестнадцатеричном представлении).
После знакомства со строками, можно перейти к стандартным функциям чтения строки из файла fgets() и записи строки в файл fputs().
Первая из них имеет три параметра:
fgets(char * buf, int n, FILE *f).
Первый параметр (buf) указывает на массив символов, в котором хранится прочитанная строка, во втором параметре (n) хранится максимальное число прочитанных символов, в третьем (f) — файловый указатель. Функция fgets() использует внешнюю память, на которую указывает buf. Эта память, задаваемая массивом или выделяемая функцией malloc(), не безгранична.
Поэтому в функции fgets() и предусмотрен второй параметр n, ограничивающий длину читаемой строки. Функция прочитает n-1 символов, поставит в конце нулевой символ ‘