onire77 Inserito: 9 marzo 2022 Segnala Share Inserito: 9 marzo 2022 Buongiorno, mi riallaccio al codice riportato qui , utilizzando un timer che ogni 100ms mi fa una lettura sul plc, funziona bene. Adesso come suggerito da dan64100 per rendere l'applicazione più reattiva occorrerebbe inserire il codice all'interno di un thread. Ho provato in vari modi, ma poiché all'interno di un thread non si può aggiornare direttamente un oggetto della form, a meno che non si faccia uso di costrutti complessi, non alla mia portata, non sono riuscito a farlo. Qualcuno ha qualche esempio da farmi vedere o qualche suggerimento? Grazie Link al commento Condividi su altri siti More sharing options...
drn5 Inserita: 9 marzo 2022 Segnala Share Inserita: 9 marzo 2022 Finora non ho sentito l'esigenza di scendere sotto i 100/200 millisecondi anche perché credo, ma è una mia personale opinione, sotto non sia più un lavoro da interfaccia operatore. Intendo dire che se vuoi salire così tanto di velocità forse è meglio affidarsi al PLC e non al PC. Curiosità.... Cosa devi fare sotto i 100 millisecondi? Link al commento Condividi su altri siti More sharing options...
fedebg Inserita: 10 marzo 2022 Segnala Share Inserita: 10 marzo 2022 Quella di aggiornare il thread UI da un'altro thread è un argomento con cui prima o poi si picchia la testa. E non è un argomento semplice. Trovo interessante questo approccio (C#): https://blog.stephencleary.com/2012/02/reporting-progress-from-async-tasks.html non è la soluzione più semplice, ma penso utilizzi tecnologie recenti (in C# si può usare anche il BackGroundWorker, ma viene considerato un approccio obsoleto). Ci cono anche metodi per fare un "context change" al volo e quindi di aggiornare oggetti grafici anche dal thread di un timer. Non entro nei dettagli perchè io stesso imparo qualcosa di C# da "hobbista". Usando C# e WPF si potrebbe usare un thread per leggere i dati ed appoggiarli in una oportuna struttura dati, e poi usare il binding per associare i dati agli elementi grafici. Qui dipende da quali strumenti utilizzi e dal tipo di interfaccia che devi realizzare. Link al commento Condividi su altri siti More sharing options...
onire77 Inserita: 11 marzo 2022 Autore Segnala Share Inserita: 11 marzo 2022 Buongiorno, drn5 100msec vanno più che bene è che se faccio anche altre operazioni, tipo leggere da un db, o se vado a leggere da un secondo plc il tutto si rallenta. fedebeg anche io conosco C# da hobbista come te, ho appena acquistato un libro sul C#, perchè volevo sviluppare in WPF e fare il binding, ma prima che arriverò ad un livello tale, troppo tempo mi ci vorrà. Nel fra tempo speravo di trovare qualcosa di "pronto". Guarderò il tuo link, se sei interessato ti consiglio di guardare anche https://www.mesta-automation.com/how-to-write-an-hmi-with-c-and-wpf-part-1-of-x/ però utilizza MVVM light ormai deprecato, invece l'esempio con Prism ancora non riesco a farlo andare. Ci dovrò lavorare ancora un po' su 😒 Comunque grazie ad entrambi Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora