Skip to content

Fix Dashboard auto-refresh: async loop, tab close, legend duplication#839

Merged
erikdarlingdata merged 1 commit intodevfrom
fix/dashboard-autorefresh-resilience
Apr 14, 2026
Merged

Fix Dashboard auto-refresh: async loop, tab close, legend duplication#839
erikdarlingdata merged 1 commit intodevfrom
fix/dashboard-autorefresh-resilience

Conversation

@erikdarlingdata
Copy link
Copy Markdown
Owner

Summary

  • Replace DispatcherTimer with async Task.Delay loop — immune to Dispatcher priority starvation under heavy chart rendering
  • Don't cancel auto-refresh on Unloaded — WPF fires this on tab switch/close, not just destruction
  • Catch OperationCanceledException from SQL queries without killing the loop
  • Skip auto-refresh ticks while a full refresh is in progress to prevent concurrent chart rendering that duplicates legends

Test plan

  • Auto-refresh ticks every 60s verified in log
  • Closing other server tabs does not kill the remaining tab's auto-refresh
  • Chart legends remain single instance across multiple refreshes
  • Slicer-narrowed query grids still respect slicer range on auto-refresh

🤖 Generated with Claude Code

…gend duplication

Replace DispatcherTimer with async Task.Delay loop to prevent priority
starvation under heavy UI load. Don't cancel the loop on Unloaded (WPF
fires Unloaded on tab switch/close, not just control destruction). Catch
OperationCanceledException from SQL queries without killing the loop.
Skip auto-refresh ticks while a full refresh is in progress to prevent
concurrent chart rendering that duplicates legends.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit 58368c6 into dev Apr 14, 2026
3 checks passed
@erikdarlingdata erikdarlingdata mentioned this pull request Apr 15, 2026
12 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant