Sfondo
La maggior parte delle applicazioni che scrivo sono prove sequenziali lunghe ore per apparecchiature elettroniche. L'apparecchiatura sottoposta a test ha una specifica che è una macchina a stati che assomiglia a ...
- Porta l'attrezzatura nella modalità A.
- Ora che l'attrezzatura è in modalità A, fai un test.
- Porta l'attrezzatura nella modalità B.
- Ora che l'attrezzatura è in modalità B, fai un altro test diverso.
- Ottieni l'attrezzatura in modalità C
- Ora che l'attrezzatura è in modalità C, esegui un terzo e ultimo test.
Si noti che l'apparecchiatura può essere messa in modalità B solo dopo aver eseguito i passaggi 1 e amp; 2. Quindi, l'apparecchiatura può essere messa in modalità C solo dopo aver eseguito i passaggi 3 e amp; 4, così via e così via. Pertanto, questi passaggi devono essere eseguiti nell'ordine esatto, altrimenti l'apparecchiatura non risponderà. A causa di questo modello, la maggior parte delle mie applicazioni consisterà di quanto segue:
- Un campo in cui vengono visualizzati i risultati delle fasi di test nel momento in cui si verificano.
- Pulsante START (consente di eseguire l'attività, eseguendo il test).
- Pulsante STOP (avvia un token di cancellazione per l'attività).
- Pulsante PAUSA (mette in pausa l'attività, con ManualResetEvent).
In genere le applicazioni funzionano nel modo seguente:
- L'utente fa clic su START e viene avviata un'attività che esegue tutti i passaggi del test.
- Una volta completati i passaggi del test, verranno avviati gli eventi che vengono utilizzati dalla GUI.
- La GUI consuma gli eventi lanciati dal thread Test e visualizza i risultati dei test (contenuti negli argomenti dell'evento).
Nota, l'unica ragione per cui utilizziamo anche una sola attività è quella di mantenere il modulo di Windows reattivo.
Sto cercando di adottare il mio stile di codifica il più possibile per tenere il passo con i trend del trend. Sto pensando di utilizzare alcune delle funzionalità più recenti di Microsoft come async / await per realizzare il mio stesso vecchio metodo di scrittura dei programmi (mostrato sopra).
Domanda
Lo stile del software statico-macchina del software giustifica un buon caso d'uso per asincroni / attese? Sarò in grado di adottare questo stile procedurale event-driven nell'uso async / await?