Domanda

Nell'applicazione su cui sto lavorando, ho cercato di utilizzare SaveFileDialog e OpenFileDialog per il loro scopo abituale (salvataggio e apertura dei file.)

Tuttavia, l'applicazione non può supportare moduli / dialoghi modali senza arresti anomali perché troppe cose sensibili al tempo accadono sul thread che possiede l'interfaccia utente.

Riscrivere l'applicazione per spostare quelle funzionalità fuori dal thread proprietario dell'interfaccia utente non è pratico a breve termine. Per finire la funzione su cui ho lavorato, ho bisogno di un sostituto per le due finestre di dialogo dei file, preferibilmente un controllo che può vivere in una forma non modale.

C'è qualcosa là fuori che posso usare che non bloccherà il mio thread proprietario dell'interfaccia utente?

È stato utile?

Soluzione

L'unica opzione esistente che conosco è Dialog Workshop.NET , un prodotto commerciale. Hanno una serie di finestre di dialogo che hanno la possibilità di essere non modali (o incorporate direttamente in un modulo di Windows anziché in una finestra separata).

Tuttavia, penserei davvero di provare a spostare la tua logica sensibile al tempo in un thread separato, invece. Avere una finestra di dialogo non modale potrebbe confondere gli utenti, poiché non si comporterà come dovrebbe comportarsi una finestra di dialogo di file. Ci sono anche altre potenziali conseguenze per avere un'interfaccia utente non bloccabile.

Altri suggerimenti

  

si verificano troppe cose sensibili al tempo sul thread proprietario dell'interfaccia utente.

Questo è il tuo vero problema. .Net ha un supporto multi-threading molto robusto. Ti suggerisco di spostare queste cose altrove, anche se sembra spiacevole. Probabilmente è meno lavoro che implementare nuovamente le finestre di dialogo Apri / Salva e sicuramente sarà meno per la tua app nel lungo periodo.

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