|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Ответ программы на запросы пользователя |
|
C/C++ - Ответ программы на запросы пользователя
|
Пользователь Сообщения: 133 |
Профиль | Сайт | Отправить PM | Цитировать Здравствуйте! Написал ресурсоемкое приложение выполняющее преобразование файлов из директории. В которой ну очень много файлов. При этом программа помещает в оперативную память просмотренные записи. Просматривая следующую запись, она проверяет на возможность дублирования этой записи. ...
Вопрос следующий. Как можно предусмотреть возможность остановки упомянутого процесса. Просто добавить кнопочку, которая при нажатии на неё меняет значение некоторой переменной (которую постоянно проверяет выполняющийся код программы) не получается. Приложение при запуске описанного процесса как бы вешается, то есть не отвечает на запросы пока не выполнит вышеупомянутые действия. Подскажите, пожалуйста, как быть? Так же хочется, что бы окно программы не зависало. |
|
------- Отправлено: 17:16, 20-09-2007 |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать Надо создать второй поток для этого процесса преобразования. А дальше копать в сторону синхронизации потоков. Например, можно создать mutex с помощью CreateMutex, затем в цикле обработки файлов можно попытаться захватить его и сразу отпустить функциями WaitForSingleObject и ReleaseMutex, а при нажатии на кнопку стоит просто попытаться захватить его той же WaitForSingleObject, тогда процесс преобразвания файлов остановится на своем вызове WaitForSingleObject.
|
Отправлено: 23:26, 20-09-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Kerbit
Что-то уж больно накручено у вас,как мне кажется. EvgeniyQQQ Мне это представляется следующим образом. Создаётся дополнительный поток функцией CreateThread,который выполняет в цикле ресурсоёмкую работу.При этом он постоянно проверяет состояние глобальной переменной. Нажатие кнопки обрабатывается в оконной функции главного потока,в ходе чего глобальная переменная инициализируется значением TRUE.Здесь можно вызвать функцию WaitForSingleObject,передав ей описатель дополнительного потока.Тогда дополнительный поток,проверив в очередной раз значение глобальной переменной,производит необходимые действия(типа освобождения использованных ресурсов) и завершается.В ответ на это функция WaitForSingleObject,которую мы вызвали в главном потоке,возвращается.Ну,и дальше уже по смыслу программы. |
------- Отправлено: 00:40, 21-09-2007 | #3 |
Пользователь Сообщения: 133
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 17:43, 25-09-2007 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Запуск программы от имени другого пользователя | SANIOK_AV | AutoIt | 4 | 17-11-2009 18:25 | |
CMD/BAT - [решено] Зпуск программы с правами определенного пользователя | Bint | Скриптовые языки администрирования Windows | 2 | 23-09-2009 22:53 | |
Доступ - [решено] Программы не видят папку если у пользователя нет прав на весь логический диск | Marlboroman | Microsoft Windows 2000/XP | 5 | 24-07-2009 13:06 | |
Есть ли программы, позволяющие определить нахождения пользователя в сети,на местности | simoncick | Хочу все знать | 4 | 10-06-2008 13:24 | |
работа программы от имени учетной записи пользователя | Guest | Microsoft Windows NT/2000/2003 | 8 | 08-04-2004 17:52 |
|