6 / 6 / 1
Регистрация: 20.02.2015
Сообщений: 114
1

Как остановить работу программы, как при ShowDialog(), только без дополнительных форм

07.07.2015, 16:25. Показов 2667. Ответов 11
Метки нет (Все метки)

Программа перебирая текстовые файлы ищет нужную инфу автоматически, но встречаются неоднозначности и требуется ручное вмешательство. Нужно приостановить работу программы, поправить что нужно, и возобновить по нажатию кнопки. Можно было бы сделать еще одну форму, ShowDialog() и тд.. но во время остановки все равно нужно работать с основной формой. По этому хочется чтоб без всяких дополнительных штук. Спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.07.2015, 16:25
Ответы с готовыми решениями:

Как остановить работу программы при нажатии на кнопку?
Нужно при нажатии на кнопку остановить работу программы

Как обойти ограничение размера программы или объема данных без создания дополнительных файлов программы.
Привет всем! Есть ли возможность увеличить допустимый размер файла программы на Qbasice, чтобы не...

Как установить только драйвера без дополнительных программ на МФУ?
Добрый день, подскажите пожалуйста как установить только драйвера на МФУ или на принтер, без...

Как заблокировать Form1 при появлении Form2 без использования ShowDialog?
Как заблокировать Form1 при появлении Form2 без использования ShowDialog?

11
Эксперт .NET
8893 / 5668 / 1351
Регистрация: 25.05.2015
Сообщений: 17,215
Записей в блоге: 14
07.07.2015, 17:27 2
Зависит от того, как выглядит
Цитата Сообщение от Чистый лист Посмотреть сообщение
ручное вмешательство
0
0 / 0 / 0
Регистрация: 07.07.2015
Сообщений: 11
07.07.2015, 17:29 3
Тормози цикл, исправляй что-то руками, возобновляй цикл. Либо формируй по новой список после "ручного исправления"
0
6 / 6 / 1
Регистрация: 20.02.2015
Сообщений: 114
07.07.2015, 18:37  [ТС] 4
Цитата Сообщение от Rius Посмотреть сообщение
Зависит от того, как выглядит
Сообщение от Чистый лист
ручное вмешательство
в каждом абзаце текста есть восьмизначное число и описание. но бывает что встречается 2 числа - тогда ручками нужно выбрать нужное и далее продолжить выполнение программы по нажатию кнопки. Например можно было бы сделать так. Когда встречается абзац с двумя числами, вызывается диалоговое окно с нужным абзацем и ТекстБоксом, куда я помещаю верное число и по нажатию кнопки ОК продолжается выполнение программы. Вот. Как бы сделать подобное без диалоговых окон.
0
Эксперт .NET
8893 / 5668 / 1351
Регистрация: 25.05.2015
Сообщений: 17,215
Записей в блоге: 14
07.07.2015, 20:29 5
Да, возможно. Но в чём будет принципиальное отличие от MessageBox? Обработка всё равно останавливается?
0
6 / 6 / 1
Регистрация: 20.02.2015
Сообщений: 114
07.07.2015, 22:29  [ТС] 6
Да. Можно. Но идея именно в том чтоб не было ни каких месседжов. Просто в них нет ни какого смысла. Они будут только мешать видеть инфу на форме. Файлы бухгалтерские, и делать все это будет бухгалтер который раньше распечатывал и делал все это вручную. Ему просто необходимо видеть весь файл, который будет отображаться в richTextBox. Рядом будет еще TextBox с кучей доп. инфы. и ListView с инфой по файлам которые каждый день приходят. и еще может чего захочется. Короче все месседжи будут только мешать смотреть на главную форму. В RichTextBox`e будет отображаться весь текст и при надобности другим цветом выделяться нужный фрагмент для наглядности. Потом по нажатию кнопки, после выбора числа, идем дальше. Все. Как сделать такое без всяких MessageBox? Как заставить программу ожидать нажатия кнопки "Далее" при обнаружении 2-х чисел в одном абзаце?
0
0 / 0 / 0
Регистрация: 07.07.2015
Сообщений: 11
07.07.2015, 22:33 7
При нажатии ставишь булевское значение, а в списке проверяешь на это значение, ну и нужно еще где то инвертировать значение
0
Эксперт .NET
8893 / 5668 / 1351
Регистрация: 25.05.2015
Сообщений: 17,215
Записей в блоге: 14
07.07.2015, 22:34 8
Чистый лист, процесс поиска в отдельном потоке?
0
6 / 6 / 1
Регистрация: 20.02.2015
Сообщений: 114
08.07.2015, 08:36  [ТС] 9
Цитата Сообщение от vurf Посмотреть сообщение
При нажатии ставишь булевское значение, а в списке проверяешь на это значение, ну и нужно еще где то инвертировать значение
Ничего не понял. Булевское значение чего? Кнопка должна вернуть? Какой список?
Цитата Сообщение от Rius Посмотреть сообщение
процесс поиска в отдельном потоке?
Возможно, гугл посылал на формумы на нечто похожее, только там ни кому не чего не помогло, вешают свои программы наглухо. Rius, киньте, пжалуйста, ссыль где можно почитать. А вообще интересно как MessageBox тормозит программу. Тоже через поток?
0
Эксперт .NET
8893 / 5668 / 1351
Регистрация: 25.05.2015
Сообщений: 17,215
Записей в блоге: 14
08.07.2015, 08:48 10
Работа с потоками в C# - часть 1
Работа с потоками в C# - часть 2
Не забывайте, что нельзя из потока напрямую обращаться к любым контролам в UI, так как они не потокобезопасны.

Как модальные окна устроены внутри, не изучал. Вроде бы они блокируют основную очередь сообщений окна, из которого вызваны.
1
6 / 6 / 4
Регистрация: 02.05.2012
Сообщений: 40
08.07.2015, 09:39 11
как то вы сами все запутали)) MessageBox.Show("") - это обычная синхронная ф-ция. Синхронная - это означает что процесс не двинется дальше, пока эта ф-ция не завершится. А вот если же у вас задача остановить поток, то это можно сделать так:
C#
1
System.Threading.Thread.Sleep(1000);
1
Эксперт .NET
8893 / 5668 / 1351
Регистрация: 25.05.2015
Сообщений: 17,215
Записей в блоге: 14
08.07.2015, 10:41 12
Чистый лист, когда сделаете в потоке, алгоритм будет такой:
крутится цикл в потоке;
потребовалось вмешательство;
сбрасывается AutoResetEvent и начинатся ожидание его установки;
через SyncronizationContext окну в потоке UI сообщается, что надо показать контролы редактирования;
контролы показываются;
юзер что-то там правит и нажимает кнопку "продолжить";
по этой кнопке контролы скрываются и запускается сигнал в AutoResetEvent;
поток возобновляется.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2015, 10:41
Помогаю со студенческими работами здесь

При соблюдении условия остановить работу программы
Как при соблюдении условия остановить работу программы? Например на кнопке?

Как остановить работу макроса при невыполнении определённых условий?
...при невыполнении определённых условий? например на листе в определённых столбцах есть...

FastColoredTextBox без дополнительных форм
Привет. Есть у кого-нибудь FastColoredTextBox без дополнительных форм (поиска, замены и так далее)?...

Как остановить поток при закрытии программы
Добрый день private void Form1_Load(object sender, EventArgs e) { ...

Как получить(передать) в работу только форму без кода?
Есть необходимость - получить передать на доработку только форму проекта delphi XE7 - тоесть надо...

Как сделать так, чтобы при выборе combobox открывался новый form без дополнительных кнопок (button)?
Что можете предложить? Очень нужно!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru