Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Ответ программы на запросы пользователя

Ответить
Настройки темы
C/C++ - Ответ программы на запросы пользователя

Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте! Написал ресурсоемкое приложение выполняющее преобразование файлов из директории. В которой ну очень много файлов. При этом программа помещает в оперативную память просмотренные записи. Просматривая следующую запись, она проверяет на возможность дублирования этой записи. ...

Вопрос следующий. Как можно предусмотреть возможность остановки упомянутого процесса. Просто добавить кнопочку, которая при нажатии на неё меняет значение некоторой переменной (которую постоянно проверяет выполняющийся код программы) не получается. Приложение при запуске описанного процесса как бы вешается, то есть не отвечает на запросы пока не выполнит вышеупомянутые действия. Подскажите, пожалуйста, как быть?
Так же хочется, что бы окно программы не зависало.

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.


Отправлено: 17:16, 20-09-2007

 

Новый участник


Сообщения: 33
Благодарности: 1

Профиль | Отправить PM | Цитировать


Надо создать второй поток для этого процесса преобразования. А дальше копать в сторону синхронизации потоков. Например, можно создать mutex с помощью CreateMutex, затем в цикле обработки файлов можно попытаться захватить его и сразу отпустить функциями WaitForSingleObject и ReleaseMutex, а при нажатии на кнопку стоит просто попытаться захватить его той же WaitForSingleObject, тогда процесс преобразвания файлов остановится на своем вызове WaitForSingleObject.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:26, 20-09-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


Kerbit
Что-то уж больно накручено у вас,как мне кажется.

EvgeniyQQQ
Мне это представляется следующим образом.
Создаётся дополнительный поток функцией CreateThread,который выполняет в цикле ресурсоёмкую работу.При этом он постоянно проверяет состояние глобальной переменной.
Нажатие кнопки обрабатывается в оконной функции главного потока,в ходе чего глобальная переменная инициализируется значением TRUE.Здесь можно вызвать функцию WaitForSingleObject,передав ей описатель дополнительного потока.Тогда дополнительный поток,проверив в очередной раз значение глобальной переменной,производит необходимые действия(типа освобождения использованных ресурсов) и завершается.В ответ на это функция WaitForSingleObject,которую мы вызвали в главном потоке,возвращается.Ну,и дальше уже по смыслу программы.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:40, 21-09-2007 | #3


Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


Kerbit, DillerInc, спасибо!

Проблема была решена добавлением в цикл преобразования файлов обработчика сообщений:
Код: Выделить весь код
        MSG message;
	if(::PeekMessage(&message,NULL,0,0,PM_REMOVE))
	{
	    ::TranslateMessage(&message);
	    ::DispatchMessage(&message);
	}

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.


Отправлено: 17:43, 25-09-2007 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Ответ программы на запросы пользователя

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Запуск программы от имени другого пользователя 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




 
Переход