Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Windows

На какой версии Windows вы сейчас сидите и почему? : Windows

22.11.2024 19:04


22.02.2023 22:08
Цитата:
OlegON Что-то мы от обсуждения винды ушли в сторону неумения работать с консольными приложениями и алгоритмически неверного решения хранить завершенные транзакции в памяти, а не на диске...
А вы не говорите про неумение, обсуждайте только этот глюк винды, и отклонения от темы не будет.
Я в паняти ничего вообще не храню. После каждого нажатия на кнопку у меня открывается файл базы данных, вносятся в него изменения, и база данных тут же закрывается. Вор время работы программы все файлы базы данных всегда закрыты. Речь идет о невозможности остановить зверствующую винду7 для завершения алгоритма работы с базой данных хотя бы на 1 секунду. Закрывает мгновенно и всё. Так быть не должно. И не было в предыдущей версии винды. Именно этот глюк конкретной винды7 и обсуждаем.
22.02.2023 22:10
Цитата:
student так одно порождает другое, в том числе и обвинение винды в том что она ведет себя не так как кому то хочется :)
Она ведет себя не так как в ее инструкции написано. Вы же и процитировали механизм SetConsoleCtrlHandler(HandlerRoutine, TRUE);
Он же из документации. Почему он не работает?
23.02.2023 17:38
Цитата:
amadey обсуждайте только этот глюк винды
хорошо, попробую с другой стороны. например, батареи ИБП хватает на 1 минуту, что важнее, выключить корректно систему или грохнуться вместе с тормозной программой, которая решила не закрываться? для меня глюк как раз в том, что какая-то программа за пользователя решает, когда система должна выключиться. то есть глюк как раз в ХР.
Цитата:
amadey Я в паняти ничего вообще не храню.
Тогда в чем вообще проблема? Если что-то нужно делать профилактическое, вроде сортировки БД, делайте это на старте программы, а не при ее остановке...
23.02.2023 17:51
Цитата:
amadey Не работает представьте себе в вин7
а должно ? нет если конечно код перекочевал с какого либо источника без осмысления, то наверное можно так думать :)
но открывая описание ms видим, что "все уже украдено до нас"
=============
В Windows 7, Windows 8, Windows 8.1 и Windows 10:

Если консольное приложение загружает библиотеку gdi32.dll или user32.dll, функция HandlerRoutine, указанная вами при вызове SetConsoleCtrlHandler, не вызывается для событий CTRL_LOGOFF_EVENT и CTRL_SHUTDOWN_EVENT. Операционная система обрабатывает процессы, которые загружают библиотеку gdi32.dll или user32.dll, как приложения Windows, а не как консольные приложения. Такое поведение также характерно для консольных приложений, которые не вызывают функции непосредственно в gdi32.dll или user32.dll, но вызывают, например, функции оболочки, которые в свою очередь вызывают функции в gdi32.dll или user32.dll.

Чтобы получать события, когда пользователь выходит из системы или устройство завершает работу в таких условиях, создайте скрытое окно в консольном приложении, а затем обеспечьте обработку сообщений окна WM_QUERYENDSESSION и WM_ENDSESSION, которые получает скрытое окно. Вы можете создать скрытое окно, вызвав метод CreateWindowEx с параметром dwExStyle, для которого задано значение 0.
=============
у вас не работает значит используются ф-ции оболочки про которые было написано
Цитата:
amadey Мое приложение не будет использовать то, что совершенно не нужно.
мой совет как раз и был для чисто консольного без оконных и ф-ций оболочки

Цитата:
amadey Вы же и процитировали механизм SetConsoleCtrlHandler(HandlerRoutine, TRUE);
Он же из документации. Почему он не работает?
потому что там написано так :) и ms если честно вам ничем не обязан, как и вы ему, так что вопрос почему - не совсем корректен - вас никто не заставляет использовать винду - пишите под линукс (там в случае чего сможете сами поведение оси поправить) и на основании того что ваши ожидания не оправдываются не стоит делать вывод что продукт не стоит использовать и сидеть на предыдущих версиях - с таким успехом можно было остаться в чистом досе - вот там то точно консоль так консоль :)
меня как пользователя напрягают приложения которые ограничивают использование МОЕГО компьютера и требуют определенной версии винды (или еще чего либо), я бы еще согласился с этим если бы это требовало единственное в мире уникальное приложение или хотя бы приложение уровня самой винды, но в данном случае я сильно сомневаюсь ...

Цитата:
amadey Технические алгоритмы низкого уровня в конечном итоге сводятся именно к такому алгоритму работы с файлами баз данных. ВСЕГДА.Если приложению не дать закончить свой алгоритм, порча будет гарантированно.
как говорил мой учитель - кривую структуру ни одним алгоритмом не исправить
к стыду своему я всегда считал что реорганизация записей в базах обычно только при операциях типа compact (что является процедурой обслуживания) а не при обычной работе, похоже что я последние 30 лет сильно заблуждался, обещаю исправить и заняться повышением уровня

за сим чтобы не повергнуться остракизму предлагаю завершить данное обсуждение :)

единственно что прошу озвучить (если не секрет конечно) какая именно база данных так себя ведет (всегда двигает ахулеард записей при вставке\удалении\изменении одной единственной) чтобы знать от применения чего отказываться сразу при упоминании
23.02.2023 18:15
Цитата:
amadey Технические алгоритмы низкого уровня в конечном итоге сводятся именно к такому алгоритму работы с файлами баз данных. ВСЕГДА.
Если приложению не дать закончить свой алгоритм, порча будет гарантированно.
Это было смешно.
26.02.2023 06:46
А я вернусь к теме, и скажу, что пользую 11-ю винду на рабочем компе, походном нубуке и старом буке, который храню из-за сентиментальных соображений (тот самый 10-летний лаптоп, на котором я пробовал tiny11).
В прошлые выходные мой любимый хуанан с ксеоном на сокете 2011 приказал долго жить, и пришлось покупать что-то доступное по цене. В итоге, обзаведясь ряженкой 7700x, обновил и винды с 10 до 11. Ключик, правда, пришлось покупать - время бесплатных апгрейдов давно прошло. Но теперь на всех пользуемых мной регулярно машинах стоит вынь 11. Не по принуждению, а по собственному осознанному выбору, и откатываться на 10-ку желания нет.
26.02.2023 16:24
Какой вы нестабильный... Не скрепный)))
28.02.2023 12:05
Цитата:
OlegON хорошо, попробую с другой стороны. например, батареи ИБП хватает на 1 минуту, что важнее, выключить корректно систему или грохнуться вместе с тормозной программой, которая решила не закрываться? для меня глюк как раз в том, что какая-то программа за пользователя решает, когда система должна выключиться. то есть глюк как раз в ХР.

Тогда в чем вообще проблема? Если что-то нужно делать профилактическое, вроде сортировки БД, делайте это на старте программы, а не при ее остановке...
Я буду упорно просвещать Вас как работает компьютер и операционная система. Это мое профильное образование.
1.Смысл безопасного завершения винды - это дать возможность (время!!) каждому процессу завершить себя безопасно, сохранить все данные, затем сбросить все кэши файлов физически на винчестер. Ожидание моего приложения не мешает винде корректно завершать все осиальные процессы и сбрасывать на винчестер кэши других файлов (кроме моих еще не закрытых), которые открывались в последние 15 минут и уже закрыты.
2.Вся работа программы (а не только на старте) - это перемещение информации по файлу - раздвигание файла для вставления в середину записи и сжимание файла при удалении записи из середины. Эта модификация информации в файлах идет непрерывно во время работы программы, и прерывать ее не может никто и ничто. Иначе печальные последствия.
ХР после завершения всех процессов, которые "отвечают" на сигналы винды (и исполняют их), может выдать сообщение о том, что один из процессов "не отвечает" на сигналы винды и сам себя длительное время (1 минуту) не завершает, и винда предлагает его принудительно завершить. На этот момент винда уже корректно себя завершила, и просто ждет что делать с неотвечающим процессом. Это разумно и это никак не испортит ни саму винду, ни другие процессы и приложения.
Описываемая проблема - это не какая-то новая функция, не какое-то улучшение. Это банальная ОШИБКА в винде.
28.02.2023 12:20
student, так называемые по-вашему "правильные" базы данных приводят к тому, что винчестер засирается 99% ненужной информацией - гигабайтами хрени, а процессор не может провернуть такие базы данных. И ждется оперативная память. Я уже приводил случай как 1с v8 не мождет работать на обычном самом дешевом компе даже если в ее базе один товар в количестве 10 штук и одна накладная. Создайте это и помсотрите сколько сама 1с вместе со своей базой займет места на винчестере.
Моя база при этом будет минимальные несколько единиц килобайт занимать. А вместе с учетной программой не дотянет и до 2 мегабайт. И по скорости раюоты моей базы я порву любого. Причем в сетевом режиме.
28.02.2023 12:23
Само по себе допущение, что некое "неправильное" консольное приложение можно винде завершить абсллютно без ожидания когда оно само себя по сигналу от винды завершит - это полная глупость. Подход "дать возможность (и время) приложению себя самому завершить" не должен зависеть от того, какие библиотеки это приложение использует, а какие - не использует. То, что вы выше написали похоже на примочку от бага. Да и в предыдущих версиях винды все же прекрасно работало без всяких примочек.
Часовой пояс GMT +3, время: 19:04.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.