Обязательно ли обрабатывать очень маловероятное событие в несерьезной программе
От: heyGuys  
Дата: 05.04.13 20:25
Оценка:
Программа несерьезная. По сути использоваться будем не очень часто. Проблема может возникнуть, если попытаются получить информацию как раз в тот момент, когда наступят новые сутки.
В получаемой информации есть зависимость от текущей даты. Информация отображается в главном окне же. Отображается она при выделении какого-то элемента списка (и относится к выделенному элементу списка). В принципе в приложении есть "наблюдатель за текущей датой", который при наступлении новой даты, если какая-то информация отображалась, заново запрашивает ее и отображает.
Но может получиться следующее:
1) перед самым наступлением новых суток (т.е. в последние миллисекунды) нажимается элемент списка
2) вызывается обработчик нажатия по элементу, в котором считывается и получается текущая дата, к-ая через доли секунды изменится, т.е. станет недействительной (считывание происходит в последние миллисекунды уходящих суток). но после считывания и формирования данных она не успевает отобразиться, т.е. не успевает выполниться соответствующий метод, перед тем, как управление передастся другому потоку приложения
3) меняется текущая дата, срабатывает "наблюдатель за текущей датой", к-ый обновляет если есть отображаемую информацию (но считанная в последние моменты прошедших суток информация еще не отображена и получается, что он обновляет информацию для другого элемента списка)
4) только после этого, сформированная на шаге 2 информация, отображается, но эта информация устарела. получается, что отобразится неверная информация, ассоциированная с предыдущими сутками. и отображаемая информация снова станет верной только после повторного нажатия на элементе списка, либо при наступлении новых суток
Срабатывание наблюдателя за текущей датой и вызов обработчика нажатия по элементу списка происходят в разных потоках из-за платформы, на которой это приложение работает, исправить это не получится. Конечно, можно сделать атомарной операцию формирования информации (в к-ую входит и считывание текущей даты) и отображения этой информации. Но это как я чувствую усложнит код и его понимание в дальнейшем, который сейчас более-менее понятный.
Приложение простое, вероятность того, что кто-то будет пользоваться им около полуночи довольно мала и тем более мала, что возникнет вышеописанная ситуация (наверное, символически где-то 0,0000000001%), но теоретически возможна. Да и если возникнет, никаких плохих последствий не будет, а если кто и заметит, то проще сказать этому человеку, что ему показалось.
Но эта ситуация не непредвиденная. По сути обработать и ее вполне возможно. Является ли для вас обработка подобных ситуаций "делом чести" или еще там по каким-либо причинам обязательной? Или вы просто на нее забьете?

Прошу прощения за многословие. И за неинтересный пост.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.