Wpf Struttura dell'applicazione? C #

1

Sto cercando di effettuare il porting di una mia applicazione da Java a C # e non riesco a spiegarmi come funziona la struttura delle applicazioni Wpf.

In Java la mia applicazione esegue il metodo main () che registra hook e chiamate native (args) per la mia classe Application, che imposta la GUI e avvia FXApplication. Ho un altro thread, che viene eseguito dalla classe GUI (per l'esecuzione di script di robot) può essere avviato e fermato con f4 e f5 rispettivamente, quindi gli hook nativi.

In C # Non riesco a capire come ottenere lo stesso effetto. Senza un metodo principale non capisco come si inizializzano gli oggetti al di fuori dell'ambito della MainWindow e si eseguono altri thread senza accoppiare la GUI a tutto.

    
posta CosmicKidd 09.07.2018 - 08:39
fonte

1 risposta

3

Ci sono due domande là dentro.

Il primo riguarda il threading. Quando crei un nuovo thread, non ha alcuna conoscenza dell'interfaccia utente, indipendentemente da dove o quando è stato creato o avviato. Così puoi facilmente creare tutti i tuoi thread di lavoro in MainWindow. Ma se vuoi che quei thread aggiornino l'interfaccia utente, devono farlo tramite Dispatcher.

Il secondo riguarda il collegamento dei tasti premuti. Per questo, dovresti usare il gestore di eventi collegato all'evento KeyDown sulla finestra. Qualcosa di simile . In WPF, generalmente non è necessario utilizzare hook nativi. Se si desidera utilizzare questo per avviare e interrompere il thread di lavoro, è necessario gestirlo nell'interfaccia utente e quindi "inviarlo" al thread di lavoro. IMO non dovresti prenderlo nel thread stesso.

Un'altra cosa da sottolineare è che puoi modificare la struttura dell'applicazione per adattarla meglio a ciò che descrivi. WPF consente di avere App.xaml come punto di ingresso dell'applicazione, che è ciò che viene utilizzato dal modello standard. Ma questa è solo comodità. Puoi creare il tuo metodo Main, creare App class, configurare la sua interfaccia utente e avviarlo interamente nel codice. Non c'è bisogno di xaml.

    
risposta data 09.07.2018 - 08:53
fonte

Leggi altre domande sui tag