Alsa: запись snd_pci_readi ()

Да, я вижу это. И да, это изменение Windows, предыдущие версии диспетчера задач сразу же отправили окно WM_CLOSE. Теперь я вижу, что он выдает ту же самую команду, которая выдается при закрытии окна с помощью кнопки «Закрыть» (WM_SYSCOMMAND, SC_CLOSE). Или нажмите Alt + F4 или используйте системное меню. Таким образом, Winforms больше не может различать диспетчер задач и пользователя, закрывающего окно, и вы получаете CloseReason.UserClosing.

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

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

Для этого нет простого способа обхода, вероятность того, что Windows собирается исправлены для восстановления старого поведения, очень близки к нулю. Очень важно очень , чтобы вы сохраняли свои данные транзакционным способом, чтобы не разрушать ценные данные, если код сохранения прерван. Используйте File.Replace () для данных файла, используйте транзакцию dbase для записи базы данных.

Неправильный способ обнаружения этого условия - использовать события Form.Deactivate и Activate. Если вы видели событие «Деактивировать» и событие FormClosing срабатывает, то разумные шансы на то, что другая программа завершает ваш.

Но обычный способ, которым вы имеете дело с этим, является общим, если пользователь заканчивает программу без сохранения данных затем вы увидите диалоговое окно, в котором будет указано, следует ли сохранять данные. Менеджер задач гарантирует, что это не будет продолжаться дальше.

0
задан MrSmile 13 July 2018 в 08:36
поделиться

1 ответ

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

Пока размер периода остается прежним, латентность не изменится.

0
ответ дан CL. 17 August 2018 в 13:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: