You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Discard and DiscardAll used ViewerClient.ShortTimeout, which is 500ms and exists
for calls on a clock - the tray's scan timer, where waiting the full timeout
would let callbacks outlast their own period. Discarding is not one of those: it
comes from the menu or a hot key, and it no longer runs on the UI thread.
Meanwhile the owner answering it may be inside InlineApplier, which waits up to
ten seconds on its cross process mutex. So half a second turned a busy owner
into "The snapshot viewer is not running." for a single discard.
DiscardAll was worse, because its result was dropped. Tracker.Clear emptied its
own snapshot list regardless, so "Discard (n)" reported success while the owner
had never received the message - and everything reappeared on the next scan two
seconds later. It now returns the outcome, and Clear only forgets what it holds
when the owner confirms.
Both wait on acceptWait, the same fifteen seconds an accept gets, for the same
reason.
0 commit comments