Программа несерьезная. По сути использоваться будем не очень часто. Проблема может возникнуть, если попытаются получить информацию как раз в тот момент, когда наступят новые сутки.
В получаемой информации есть зависимость от текущей даты. Информация отображается в главном окне же. Отображается она при выделении какого-то элемента списка (и относится к выделенному элементу списка). В принципе в приложении есть "наблюдатель за текущей датой", который при наступлении новой даты, если какая-то информация отображалась, заново запрашивает ее и отображает.
Но может получиться следующее:
1) перед самым наступлением новых суток (т.е. в последние миллисекунды) нажимается элемент списка
2) вызывается обработчик нажатия по элементу, в котором считывается и получается текущая дата, к-ая через доли секунды изменится, т.е. станет недействительной (считывание происходит в последние миллисекунды уходящих суток). но после считывания и формирования данных она не успевает отобразиться, т.е. не успевает выполниться соответствующий метод, перед тем, как управление передастся другому потоку приложения
3) меняется текущая дата, срабатывает "наблюдатель за текущей датой", к-ый обновляет если есть отображаемую информацию (но считанная в последние моменты прошедших суток информация еще не отображена и получается, что он обновляет информацию для другого элемента списка)
4) только после этого, сформированная на шаге 2 информация, отображается, но эта информация устарела. получается, что отобразится неверная информация, ассоциированная с предыдущими сутками. и отображаемая информация снова станет верной только после повторного нажатия на элементе списка, либо при наступлении новых суток
Срабатывание наблюдателя за текущей датой и вызов обработчика нажатия по элементу списка происходят в разных потоках из-за платформы, на которой это приложение работает, исправить это не получится. Конечно, можно сделать атомарной операцию формирования информации (в к-ую входит и считывание текущей даты) и отображения этой информации. Но это как я чувствую усложнит код и его понимание в дальнейшем, который сейчас более-менее понятный.
Приложение простое, вероятность того, что кто-то будет пользоваться им около полуночи довольно мала и тем более мала, что возникнет вышеописанная ситуация (наверное, символически где-то 0,0000000001%), но теоретически возможна. Да и если возникнет, никаких плохих последствий не будет, а если кто и заметит, то проще сказать этому человеку, что ему показалось.
Но эта ситуация не непредвиденная. По сути обработать и ее вполне возможно. Является ли для вас обработка подобных ситуаций "делом чести" или еще там по каким-либо причинам обязательной? Или вы просто на нее забьете?
Прошу прощения за многословие. И за неинтересный пост.
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
Здравствуйте, heyGuys, Вы писали:
G>Но эта ситуация не непредвиденная. По сути обработать и ее вполне возможно. Является ли для вас обработка подобных ситуаций "делом чести" или еще там по каким-либо причинам обязательной? Или вы просто на нее забьете?
Цена-качество.
Пока будешь ловить мелких блох, можешь упустить крупных тараканов.
А так — используй здравый смысл.
Течёт вода Кубань-реки куда велят большевики.
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
Здравствуйте, heyGuys, Вы писали: G>1) перед самым наступлением новых суток (т.е. в последние миллисекунды) нажимается элемент списка
да я бы забил бы. тем более если можно еще ткнуть и обновить снова
вон, иногда сайт открываешь, он лежит. ничего страшного — ткнешь в него, заработает.
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
Здравствуйте, heyGuys, Вы писали:
G>По сути обработать и ее вполне возможно. Является ли для вас обработка подобных ситуаций "делом чести" или еще там по каким-либо причинам обязательной? Или вы просто на нее забьете?
Конечно возможно. И дело чести здесь скорее — выбрать наименее трудоемкий вариант предотвращения "катастрофы". Например за 5-10 секунд до наступления полуночи, дабы предотвратить превращение принцессы в тыкву, просто не давать пользователю выбрать в комбике что-либо
/* иЗвиНите зА неРовнЫй поЧерК */
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
Здравствуйте, heyGuys, Вы писали:
G>Но эта ситуация не непредвиденная. По сути обработать и ее вполне возможно. Является ли для вас обработка подобных ситуаций "делом чести" или еще там по каким-либо причинам обязательной? Или вы просто на нее забьете?
А не проще сделать автообновление каждую секунду\минуту\час\другой_квант_времени?
G>Прошу прощения за многословие. И за неинтересный пост.
Проблема у вас не в этом конкретном случае, на него можно забить. Проблема в том что у вас обновление данных привязано к нажатию, что во-первых неочевидно, во вторых создает плохой UX, потому что надо много тыкать мышкой чтобы просто увидеть.
Исправьте эту проблему и много других проблем просто отвалятся.
Re[2]: Обязательно ли обрабатывать очень маловероятное событие в несерьезной про
Здравствуйте, __kot2, Вы писали:
__>Здравствуйте, heyGuys, Вы писали: G>>1) перед самым наступлением новых суток (т.е. в последние миллисекунды) нажимается элемент списка __>да я бы забил бы. тем более если можно еще ткнуть и обновить снова __>вон, иногда сайт открываешь, он лежит. ничего страшного — ткнешь в него, заработает.
При этом важно, чтобы пользователь однозначно понял, что отображаемая информация некорректна и выполнил обновление вручную. А если (условный пример) корректно обновится 99% содержимого, то пользователь может ничего особенного и не заметить...
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
Здравствуйте, heyGuys, Вы писали:
G>Программа несерьезная. По сути использоваться будем не очень часто
Не вполне понятно ваше определение термина "несеръёзная". Если под ним понимается "программа, к которой не предьявляются никакие требования по удобству/надёжности/корректности/итп", то и без дальнейшего рассуждения понятно, что нет, не обязательно. Просто по определению: ведь вопрос изморфен вопросу "обязательно ли выполнять необязательные требования?".
А если требования к программе таки существуют, то надо исходить из них.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
Здравствуйте, heyGuys, Вы писали:
G>По сути обработать и ее вполне возможно.
Более того, я так и не увидел, в чем сложность обработки ситуации Тот, кто следит за датой и запрашивает инфу — поставщик. Тот, кто отображает — потребитель. Проблема в том, чтобы поставщик оповещал потребителч о произошедшем изменении инфы?
"Нормальные герои всегда идут в обход!"
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
Здравствуйте, heyGuys, Вы писали:
G>Но эта ситуация не непредвиденная. По сути обработать и ее вполне возможно. Является ли для вас обработка подобных ситуаций "делом чести" или еще там по каким-либо причинам обязательной? Или вы просто на нее забьете?
1) Конкретно эту пролеу легко поправит, если приделать счётчик, внутри скольких обновлений мы сейчас нахоимся. И придерживать нить, которая запускает обновления по таймеру, до того момента, когда активных обновлений нет.
2) Скорее всего в твоей программе что-то не так архитектурно, так как если бы всё было "так", то обновлялка по таймеру просто добавляла бы в тот же механизм, который клики по контролам обрабатывает, команду, "обнови всё", или инвалидировала бы все контролы и всё бы работало само
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском