2011-01-26 8 views
5

Oggi abbiamo riscontrato un piccolo problema strano in una delle nostre applicazioni WPF e non siamo esattamente sicuri su come gestirlo. Quando eseguiamo il software su uno dei nostri laptop, lo schermo passa alla modalità di sospensione (diventa nero) dopo un po 'di tempo quando non c'è interazione con l'utente. L'applicazione stessa è ancora occupata a scaricare i dati da Internet e riempire le tabelle in un database. C'è anche una barra di avanzamento e una barra di stato.Le finestre dell'applicazione WPF non si aggiornano completamente dopo lo schermo si riattiva dallo stato di riposo

Se si riattiva lo schermo semplicemente spostando il mouse, il programma viene nuovamente visualizzato ma alcune parti della finestra non vengono aggiornate. La barra di avanzamento mostra ancora i valori anche se il processo è completato e anche la barra di stato è sbagliata.

Da questo momento in poi è possibile lavorare con il programma come se nulla fosse successo, ma la barra di avanzamento e la barra di stato verranno ridisegnate solo se si riduce a icona la finestra completa sulla barra delle attività e si ingrandisce di nuovo. O se si avvia un'altra azione che utilizzerà anche la barra di avanzamento o la barra di stato.

Questo strano comportamento ha causato molta confusione perché i dati visualizzati sembrano essere errati dopo che lo schermo si è risvegliato dal sonno ed è necessario ridurre a icona e ingrandire la finestra per vedere cosa sta realmente accadendo.

Cosa c'è di sbagliato qui?

risposta

2

I driver video sono aggiornati? In caso contrario, potresti provare ad aggiornarli. WPF utilizza hardware video per il suo rendering. Ho avuto alcuni problemi di aggiornamento prima e nuovi driver riparato.

0

Assicurarsi che l'operazione in background non stia eseguendo il thread dell'interfaccia utente. Ma come suggerisce Cory, potrebbe essere un problema con il driver video.

0

Ho lo stesso problema e nessuna soluzione, ma un semplice esempio che porta al comportamento descrittivo. Può essere utile nella ricerca degli errori.

<Window x:Class="BlackAfterMinimize.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" SizeToContent="WidthAndHeight" WindowState="Minimized"> 
    <Grid> 
    <TextBlock Text="Hello World" /> 
    </Grid> 
</Window>