Реинициализация при смене дисплея

Обновлено: 03.07.2024

Механизм подключения обработчика ожидания известен с 8.0, описан в Синтакс-помощнике и десятках публикаций. По сути, это механизм, реализующий псевдо-параллельный вызов процедур клиентского контекста сеанса с заданной периодичностью либо однократно.

С точки зрения языка 1С, это две процедуры глобального контекста сеанса: ПодключитьОбработчикОжидания и ОтключитьОбработчикОжидания. Пересказывать хелп не будем, отметим только, что сложился стереотип, будто однократность применима лишь для таймаута менее 1 секунды; но реально однократный вызов может использовать любой таймаут.

С точки зрения платформы, это поддерживаемая процессом rphost, единая для сеанса, виртуальная таблица ключей, таймаутов и текущих значений таймера.
* Ключ - хеш от ID модуля, откуда был выполнен вызов, ID модуля вызываемой процедуры обработчика, и имени процедуры обработчика. Идентификаторы модулей можно увидеть, выгрузив конфигурацию в файлы.
* Таймаут - число, рассчитывается в миллисекундах.
* Текущее значение таймера - момент предыдущего срабатывания, дата/время с миллисекундами. Таймеры отталкиваются от текущей даты/времени сеанса в момент компиляции подключения обработчика или реинициализации таблицы.

Эта таблица обслуживается специальным обработчиком, который не является сервисом кластера, а просто часть механизма платформы. Обработчик не учитывает успешность вызова и выполнения вызываемой процедуры.

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

Реинициализация этой таблицы происходит при любом "возврате на клиент", т.е. при передаче менеджером кластера управления клиенту (штатного, по службе кластера, или по исключению) и передаче хранимых для рабочего процесса сеансовых данных. Штатно - понятно; по службе кластера - имеется в виду служба отладчика, т.е. продолжение действия по прохождении точки останова; по исключению - только если ошибка была восстановимая, касалась сервера либо обмена клиент-сервер и (если запуск был из формы) не касалась блокировок этой формы.

Прекращение обработки конкретной записи этой таблицы происходит, когда из стека исчезает указатель в памяти на область, хранящую тот контекст (форму/модуль и их кэш), откуда выполнялось подключение обработчика (а вовсе не тот контекст, где располагается вызываемая по таймауту процедура, как иногда ошибочно пишут). Грубо говоря для большинства случаев, обработчик стопится, когда закрывается форма или приложение, откуда он стартовал.

Существенно различно в разных релизах до 8.3.11 ведёт себя при остановке на точке останова; в текущих релизах всегда сбрасываются таймауты и сразу стартует обработка заново - и по прохождении останова, и при остановке по ошибке, если ошибка была обработана. Не важно, где находится точка останова - в действиях, вызванных обработчиком, или в других действиях, реинициализация делается всегда.

Поведение аналогично и для файловых, и для клиент-серверных ИБ. Поведение в клиенте тестирования аналогично поведению в обычных запусках клиента. Поведение в веб-клиенте формально одинаковое, но известны случаи, когда в браузере "Safari" таймауты "сжимались" относительно ожидаемого в состоянии "покоя" клиента, т.е. написано было 60, а реально срабатывало через 45-48 секунд.

Сеансы и обработчики. До версии 8.3.7.2008 наличие хотя бы одного сработавшего обработчика ожидания вынуждало сеанс никогда не "засыпать" и даже не считаться пассивным. В некоторых релизах 8.3.9 и 8.3.11 запущенные обработчики не мешали сеансу засыпать и быть впоследствии удалённым, но продолжали работать, что проверено выполнением записи из их процедуры в клиентский файл на локальном ПК (занята ли бывала при этом лицензия, сведений нет) - фиксировать активность сеанса средствами ЖР нельзя было потому, что запись в ЖР это обращение к сервису кластера и вообще к серверу.

Наличие назначенного сеансу соединения никак ни на что не влияло и не влияет. Соединение может пропасть, а обработчик продолжит свою работу.

В настоящее время запущенные обработчики в понятие "активность пользователя" (не юзера-за-экраном, а именно пользователя в админском смысле) не входят. Сведений о том, передаётся ли прежняя сохранённая таблица обработчиков сеансу кластером при возобновлении его работы, или просто реинициализируется, нет.

Из устройства этого механизма следует ряд нюансов.

1. Обработчик можно запускать и останавливать в форме, экземпляр которой создан, но не открыт; в любой момент, пока её контекст есть в некоей переменной. Запускать и останавливать придётся отдельными экспортными процедурами, т.к. обращение "НеоткрытаяФорма.ПодключитьОбработчикОжидания" игнорируется без генерации исключения. С уничтожением переменной формы останавливается и обработчик - поэтому следует быть внимательными, чтобы после закрытия запустившей формы или команды не случилось зависания этой переменной в памяти сеанса.


2. Не-клиентские и не-контекстные процедуры не могут обрабатываться. Логично - в таблице тайминга ориентируемся на хеш, связанный с контекстом. Процедура не должна иметь даже необязательные параметры, и быть экспортной. Также, может быть подключена функция; результат её выполнения игнорируется.

3. В качестве запускаемых обработчиком могут быть процедуры модуля приложения, любого глобального общего модуля, для которого указано исполнение на клиенте (в т.ч. наряду с исполнением на сервере или во внешнем соединении). Если модуль не "чисто" клиентский, по умолчанию директивы компиляции и инструкции препроцессора исполняемой процедуре всё равно не нужны - при наличии флага "Клиент" для модуля обработчик ожидания все его "подходящие" процедуры считает клиентскими. Но, конечно, желательно всё указывать в явном виде. Важно! Запуск и остановка всегда должны находиться в контексте одного модуля, иначе запустить - запустит, но потом не остановит. Это могут быть модуль приложения, глобальные и неглобальные общие модули, модули объектов и модули менеджеров - главное, чтобы вызов старта и остановки происходил в одном модуле.
В модуле приложения подключение можно выполнять в любом системном событии - в ПередНачаломРаботыСистемы оно уже корректно запустится, а в событиях завершения работы системы будет проигнорировано.

5. Сколько бы раз ни было запущено подключение обработчика некоей процедуры, учитывается лишь последний запуск - он "перебивает" предыдущие. Повторное/многократное отключение обработчика игнорируется без генерации исключения. В том числе и если обработчик вообще не был запущен.


6. Из процедуры, вызванной обработчиком, можно повторно подключать, переподключать с иным таймаутом, останавливать этот обработчик. Например, можно эмулировать однократный запуск - допустим, условие определяется при срабатывании; можно эмулировать многократный запуск-вызов с таймаутом менее 1 секунды. В этом случае, т.е. если внутри процедуры-обработчика однократного таймаута находится повторное её же подключение, получается практически мгновенный и при необходимости бесконечный самовызов. Зависаний и торможений, если в рабочей части вызванного нет "тяжёлых" действий, не замечено.


7. При одинаковом таймауте, обработчики модуля приложения и глобальных модулей более приоритетны при опросе и срабатывании, чем обработчики форм. Между собой обработчики модуля приложения и глобальных модулей "равноправны", формы между собой - тоже. Это означает, что и для однократного, и для постоянного вызова всегда сначала отрабатывает "глобальный", потом "форменный". Независимо от порядка подключения обработчиков, если они были подключены за одну компиляцию фрагмента кода (это хорошо заметно на примере однократных вызовов с таймаутом 0.1). А вот при равных "правах" вызовы отрабатывают по порядку инициализации-подключения их обработчиков.

8. Таймауты, имеющие дробные значения секунд, корректно обрабатываются независимо от значения флага однократности (это легко проверить с помощью ТекущаяУниверсальнаяДатаВМиллисекундах), с точностью до десятых.

9. В синтакс-помощнике указано, что "вызов будет осуществляться только в "состоянии покоя", то есть в тот момент, когда программа не выполняет никаких действий.". Наличие на экране другой формы или модального диалога в общем случае тоже не есть выполнение действия, однако, поведение различно. Обработчик НЕ "тормозят" ни модальные, ни асинхронно-псевдомодальные служебные или платформенные диалоги. Обработчик "тормозят" открытые формы, чей режим открытия окна "Блокировать весь интерфейс". По завершении действий с ними обработка возобновляется, и тайминг не сбивается. Обработчик НЕ тормозят и не сбивают тайминг все остальные разнообразно открытые формы с прочими режимами, даже если форма, где запущен обработчик - их владелец, и для них указано "Блокировать окно владельца".

10. Редко, но используется запуск средствами СОМ полноценного приложения V83.Application. При таком запуске расположенные в модуле приложения обработчики запускаются и живут до конца сеанса, независимо от видимости приложения. Возможен запуск КомОбъект.ПодключитьОбработчикОжидания (справедливо и для модуля приложения, и для форм, хотя в этом случае работа с формами уже совсем фантастика) и остановка аналогично. Важно, что в этом случае при закрытии запускавшего контекста (и формы, и самого запустившего сеанса) запущенный продолжает работать, что при Visible=Ложь кончится снятием через диспетчер задач. В некоторых релизах сеанс, применительно к ком-объекту которого делали вызов, при закрытии приложения выдаёт невосстановимую ошибку.

p.s. Сведения о ёмкости служебной таблицы запущенных обработчиков найти не удалось, т.е. сколько максимум может быть таких обработчиков в сеансе, или в конкретном контексте, данных нет. Эксперимент со 100 разными процедурами с одним или разными таймаутами показал правильную штатную работу.


Я наверняка многое упустил; дополнения и замечания приветствуются.

Media Player Classic - Home Cinema


MPC-HC — бесплатный проигрыватель аудио и видеофайлов под Windows. Может использовать как встроенные кодеки, так и внешние DirectShow фильтры, QuickTime, RealMedia, ShockWave. Поддерживает DXVA. Есть русский интерфейс. Проект является развитием оригинального Media Player Classic от Gabest.
Об основных возможностях >>читать тут

Последняя официальная версия: 1.5.2.3456 (x86 / x64) 22.07.2011
Последняя бета-версия: 1.5.3.3757 (x86/x64) 12.10.2011


Другие ссылки:
— сплиттер для MKV, MP4, OGG/OGM, MPEG TS. Включает Haali Renderer.
— рендерер, нацеленный на максимальное качество воспроизведения.
(зеркало) — позволяет смотреть Smacker и Bink видео.
— определение возможностей видеокарты по декодированию видео.
— сплиттер на основе libavformat и набор декодеров.
— DirectShow-декодер видео, использующий возможности аппаратного декодирующего устройства (движка) NVIDIA из состава GPU посредством CUDA Video Decoding API ("CUVID"). C версии LAV Filters 0.36 LAV CUVID Decoder интегрирован в состав его компонента LAV Video.
— сплиттер с продвинутыми настройками. (тема на хоботе)
— инструмент для автоматического изменения частоты экрана в зависимости от видео.

Пока будет так - почему так, объяснять не буду . просто так надо. Либо убери галку в настройках - Вывод->Реинициализация при смене монитора.

А ты проверь - при полноэкранном режиме нажатие Win+D при вкл/выкл. этой опции.

Пока? То есть, в будущем исправите? Ибо это ужасно бесит во многих случаях. Иногда просто не успеваешь прочитать, что там выскочило в OSD, когда машинально переходишь в полноэкранный режим или наоборот

Честно говоря не могу понять что там может бесить, да и что надо видеть в OSD при переходе в олный экран и обратно . но в любом случае, починил.


Я уже два раза делал обзор на замену кнопки Home для iPhone, каждый раз предлагая варианты возвращения к нормальному использованию телефона. Сейчас — самый бюджетный, что я видел. Раньше я такую кнопку в распродажу за 109 руб. с учётом доставки покупал (в распродажу, помню, доставка была бесплатной). Данная кнопка — сенсорная, то есть маханического нажатия нет, как минимум она позиционируется именно так.
Обзор будет кратким, во многом просто на радостях, что кнопка была доставлена и не потерялась, а также что не надо будет писать продавцу, открывать спор, ждать ответа АлиЭкспресс и прочего (быстрее заменить кнопку, чем написывать и ждать ответа). Имеем телефон с включенным Assistive Touch, который ограничивает функционал управления телефоном, делает его неудобным (без рабочей кнопки Home):

Главная проблема, что неудобно разблокировать телефон: нажать на кнопку включения (или подвигать им), потом через вспомогательную кнопку получить доступ к меню.
Отключаем телефон и открываем дисплейный модуль, отвинчиваем шурупы на защитном шлейфе и снимаем его, отсоединяем коннектор батареи, переворачиваем модуль (так, чтобы не оборвать шлейфа) и видим установленную оригинальную кнопку Home (поставил, так как неоригинальная черная перестала работать и с неработающей неоригианльной ходить не хотел):

Ниже показаны фотографии сравнения кнопки из обзора с оригинальной (которую скотчем перетянул, в надежде, что заработает, но чуда не произошло). Слева — оригинальная, справа — неоригинальная:

Количество микросхем на кнопке слева отличается в большую сторону, что неудивительно. Ставим новую на место старой и включаем телефон:

Обратите внимание, что при заменённом дисплейном модуле нельзя нажимать сильно или надавливать на края около кнопки Home, так как в тех местах находится шлейф подсветки, который в модулях из неавторизированных сервис-центров (бывает) не высшего качества, поэтому можно «нарваться» на ситуацию поломки части подсветки, что видно на следующий фотографии, правый нижний угол:

На фотографии, выше предыдущей, виден шлейф дисплейного модуля. Если у кого ещё есть непроизвольные нажатия на экране, которые возникают при его замене, то для нивелирования таких нажатий надо выровнять шлейф по краях этого контакта (немного даже опустив ниже). Плюс ещё расстояние между двумя шлейфами дисплейного модуля в месте соприкосновения на защитном экране должно быть не более 0,9 мм друг от друга, но это настолько ювелирная работа, что я не знаю, верить в это или нет, но как условие борьбы с Ghost Touch называлось (старался соблюсти все самые мелкие требования: бывало по-разному).
На анимации ниже показана работоспособность новой неоригинальной дешёвой рабочей кнопки Home:

Долгим удержанием кнопки хотел вызвать голосового помощника, но, вспомнив, что отключил эту функцию, мог не делать и опустил верхнюю часть экрана вниз. Кстати, в магазине есть дорогой лот (относительно лота из поста, проверяйте, доступен или нет к заказу), кнопка (AU 3D Edition) в котором как раз должна стабильно вызывать эту функцию. Я покупал в этом же магазине эту модель. Названная функция работала, но со всем остальным функционалом была проблема, поэтому кнопка мне не понравилась. Лучше обходить стороной её, тем более что функция не особо нужная (можно пожертвовать ради оставшихся возможностей). И да, самое главное, любая неоригинальная кнопка Home не вернёт отпечаток пальца.


Подтверждение покупки:

Таких кнопок у меня было 4 штуки. Одна из них черная, когда сменный дисплей был черным. Первая — это на пробу заказывал, понравилась. Вторая — дорогой лот (AU 3D Edition) у продавца, но по факту его лучше не брать, у меня хуже работал и мне не понравился. И, наконец, текущая покупка, которая шла до меня в течение 72 дней: я уже был на почте, написал продавцу, договорились, что жду две недели, но прождал больше, а потом приходит отбивка в приложении Почта, что кнопка ожидает адресата.



Эта покупка была как раз в распродажу 11.11 в 2020 г., то есть практически год назад.

Вывод

Главный вывод сего опуса о страданиях владельца телефона Apple при поломке — уже можно некоторые элементы купить дешевле и вернуть часть функционала самому. Главное, иметь отвёртки. Я купил комплект отвёрток, как раз предназначенный для ремонта мелкой техники, в котором 28 бит, но нет нужной с тремя лепестками для болтов iPhone. Как показывает моя практика, вполне можно обойтись теми, что идут вместе с дисплеями как подарок.

img

Такая проблема, решил прикупить себе оперативки не много.

Когда вставил новую планку, комп включается,но монитор не реагирует,куллеры крутятся и все.

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

В чем может быть проблема?

гугл ничего полезного не дал

в оперативки же) вообще не самое лучшее сочетание планок

а если 1 новую вставляешь все ок?

img



в оперативки же) вообще не самое лучшее сочетание планок

но по характеристикам такая ведь как надо,или может брак?
может быть брак, а может просто мамка капризничает, такое встречается повесеместо они все однобанковые? или все двубанковые?

img



может быть брак, а может просто мамка капризничает, такое встречается повесеместо они все однобанковые? или все двубанковые?

не сильно разбираюсь, а что это значит однобанковые и двубанковые?

img



у старой с двух у новой с одной стороны, ты про эти черные чипы на планках?

Доброго времени суток, друзья!

Такая проблема, решил прикупить себе оперативки не много.

Две старые планки по 2 гб

и купил новую планку на 4 гб

Когда вставил новую планку, комп включается,но монитор не реагирует,куллеры крутятся и все.

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

В чем может быть проблема?

гугл ничего полезного не дал

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

img



Было у меня такое, а лечил я это так: я запускал комп,без монитора, он прогружался а только потом я подключал монитор
Все элементарно.Монитор не включается из за конфликта процесора и оперативной памяти.Попробуй купить качественную память на другом чипе.
Посмотри характеристики матери на оф. сайте. Возможно,она не поддерживает такую оперативку\количество такой оперативки. У меня так было
все эти кингстоны, корсары и т.д. - шляпа маркетинговая. Бери хьюникс или самсунг - проверенные временем, не конфликтуют ни с чем, еще и гонятся отлично, если есть желание.

Че за бред вы вообще пишите. Монитор должен включаться и при выключеном пк. Монитор и память никак не зависит друг от друга. Если не влючается монитор - ищи проблемму кабеля от монитора к системнику. Есть 2 вида кабеля. DVI и VGA. Не работает DVI? Вышел из строя преобразователь на мат карте.

Если при подключении новой памяти, отключал все провода от системника. 100% вышел декодер сигнала дви на материнке(остаточное напряжение фатально для этой системы).

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

Если при старой планке памяти все работает. То я хз тогда. Адский конфликт материнки и памяти. Но у вас кингстон, это как бы маловероятно.

Че за бред вы вообще пишите. Монитор должен включаться и при выключеном пк. Монитор и память никак не зависит друг от друга. Если не влючается монитор - ищи проблемму кабеля от монитора к системнику. Есть 2 вида кабеля. DVI и VGA. Не работает DVI? Вышел из строя преобразователь на мат карте.

Если при подключении новой памяти, отключал все провода от системника. 100% вышел декодер сигнала дви на материнке(остаточное напряжение фатально для этой системы).

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

Если при старой планке памяти все работает. То я хз тогда. Адский конфликт материнки и памяти. Но у вас кингстон, это как бы маловероятно.


все эти кингстоны, корсары и т.д. - шляпа маркетинговая. Бери хьюникс или самсунг - проверенные временем, не конфликтуют ни с чем, еще и гонятся отлично, если есть желание.

Если хьюникс еще катируется, то самсунг полная шляпа. Хотя и хьюникс тоже. А шляпа маркетинговая предложеная вами, как раз таки проверена временем.
ПС. не на хьюниксе, не на самсунге нету платы разрядки. Первый скачек напряжения серьезный - бб плата. На кингстоне их 2, на корсаре их 6.

Поналетели диванные аналитики, и давай рассказывать какие все у мамы клевые мастера на все руки лол.

По теме: вероятнее всего у тебя выставляются кривые тайминги для Ram, воткни новую планку в мать, отруби пк от эл-ва и вытащи батарейку, которая биос подпитывает, секунд на 20, вставь попробуй включи. Или джампером биос сбрось на дефолтные настройки и попробуй включить.

Была такая же лабуда, в моем случае лечилось этими действиями -_-

Поналетели диванные аналитики, и давай рассказывать какие все у мамы клевые мастера на все руки лол.

По теме: вероятнее всего у тебя выставляются кривые тайминги для Ram, воткни новую планку в мать, отруби пк от эл-ва и вытащи батарейку, которая биос подпитывает, секунд на 20, вставь попробуй включи. Или джампером биос сбрось на дефолтные настройки и попробуй включить.

Была такая же лабуда, в моем случае лечилось этими действиями -_-

Кстати я об этом не подумал, может быть конфликт временной памяти биоса. Попробуй что написали. При выключеном пк, вытащи-вставь батарейку на мат карте.

Че за бред вы вообще пишите. Монитор должен включаться и при выключеном пк. Монитор и память никак не зависит друг от друга. Если не влючается монитор - ищи проблемму кабеля от монитора к системнику. Есть 2 вида кабеля. DVI и VGA. Не работает DVI? Вышел из строя преобразователь на мат карте.

Если при подключении новой памяти, отключал все провода от системника. 100% вышел декодер сигнала дви на материнке(остаточное напряжение фатально для этой системы).

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

Если при старой планке памяти все работает. То я хз тогда. Адский конфликт материнки и памяти. Но у вас кингстон, это как бы маловероятно.

Читайте также: