Domanda

Winform su CF è un po' pesante, l'inizializzazione di molti handle di Windows richiede molto tempo e memoria.Un altro problema è la mancanza del doppio buffering integrato e la mancanza di controllo sul rendering dell'interfaccia utente significa che durante le operazioni ad uso intensivo del processore l'interfaccia utente potrebbe lasciare l'utente a fissare uno schermo a metà rendering.Carino!

Per alleviare questo problema cercherei un quadro di controllo leggero, ce n'è già uno in giro o bisognerebbe prepararlo in casa?

Per leggerezza intendo una libreria di controlli che consente di controllare completamente la verniciatura dei controlli e non utilizza molti costosi handle di finestre.

NOTA:Per favore, non suggerire che sto eseguendo troppo sul thread dell'interfaccia utente.Questo è non il caso.

È stato utile?

Soluzione

L'altro giorno mi sono imbattuto in questo, che potrebbe essere utile almeno come punto di partenza: Fuild: controlli touch di Windows Mobile .NET.L'aspetto è gradevole, ma non è disponibile alcun supporto per la fase di progettazione.Non so molto sull'impronta della memoria, ecc., ma tutto ha un doppio buffer e le prestazioni sembrano essere piuttosto buone.

Altri suggerimenti

Ok, solo un'idea che mi è venuta in mente...

Che ne dici di creare un oggetto di sincronizzazione, ad es.sezione critica o blocco singolo, nella tua applicazione, condiviso tra il tuo lavoratore e i thread della GUI.Sostituisci la vernice.Quando inizi a dipingere, blocca tutti gli altri thread, in modo da non rimanere con uno schermo mezzo dipinto mentre monopolizzano la CPU.

(questo ovviamente presuppone che presentare una bella immagine all'utente sia la cosa più importante di cui hai bisogno;))

è un po' lento e non è possibile controllare l'evento paint, quindi durante le operazioni ad uso intensivo del processore l'interfaccia utente potrebbe lasciare l'utente a fissare uno schermo a metà rendering.

In genere è una cattiva idea eseguire attività costose sul thread dell'interfaccia utente.Per mantenere reattiva l'interfaccia utente, queste attività devono essere eseguite da a filo del lavoratore

In realtà, puoi sovrascrivere l'evento paint.

E l'idea è di scaricare le operazioni di lunga durata su un thread separato.In realtà non è diverso da qualsiasi altro framework basato sugli eventi. Nulla che si basa sulla gestione di un evento Paint sarà suscettibile a ciò.

Inoltre, non esiste un sistema che consenta di determinare quando viene generato l'evento paint.Questo tipo di evento viene generalmente generato dal livello del gestore delle finestre, che è esterno all'applicazione (o anche al framework).Puoi gestire l'evento da solo e semplicemente non lavorare qualche volta, ma non lo consiglierei.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top