Ho bisogno di scrivere macchine a stati che corrono velocemente in C#. Mi piace la libreria Windows Workflow Foundation, ma è troppo lenta e affollata di funzionalità (ad es. Pesante). Ho bisogno di qualcosa di più veloce, idealmente con un'utilità grafica per progettare i diagrammi, e quindi sputare il codice C#. Qualche suggerimento? Grazie!Come scrivere macchine a stati con C#?
risposta
In definitiva, probabilmente si desidera il nuovo WF engine in .NET 4.0, poiché è molto più veloce e fornisce un'attività del diagramma di flusso (non una macchina a stati, ma funziona per la maggior parte degli scenari) e una buona esperienza di progettazione dell'interfaccia utente. Ma dal momento che non è ancora stato rilasciato, probabilmente non è una buona risposta per ora.
In alternativa, è possibile provare stateless, una libreria specifica per la creazione di programmi macchina di stato in .NET. Non sembra fornire un'interfaccia utente, ma sembra adatto per soddisfare gli altri tuoi obiettivi.
Sì, Microsoft avrebbe potuto essere in anticipo sui tempi con State Machine WF. I flussi di lavoro sequenziali vengono ricevuti molto meglio.
Quando abbiamo deciso di utilizzare una macchina a stati, abbiamo eseguito il rollover. perché non siamo riusciti a trovare un framework accettabile con un'interfaccia utente. Ecco i nostri passi. Spero che ti aiuteranno.
Crea la tua interfaccia Stato:
public interface IApplicationState { void ClickOnAddFindings(); void ClickOnViewReport(); //And so forth }
Creare gli stati e li hanno implementano l'interfaccia:
public class AddFindingsState : IApplicationState { frmMain _mForm; public AddFindingsState(frmMain mForm) { this._mForm = mForm; } public void ClickOnAddFindings() { } public void ClickOnViewReport() { // Set the State _mForm.SetState(_mForm.GetViewTheReportState()); } }
istanziare gli stati nel vostro principale classe.
IApplicationState _addFindingsState; IApplicationState _viewTheReportState; _addFindingsState = new AddFindingsState(this); _viewTheReportState = new ViewTheReportState(this);
Quando l'utente fa qualcosa che richiede un cambiamento di stato, chiamare i metodi per impostare lo stato:
_state.ClickOnAFinding();
Naturalmente, le azioni vivranno nel caso particolare della IApplicationState.
Interessante implementazione. Grazie per la condivisione. – Nestor
- 1. Il C# include macchine a stati finiti?
- 2. macchine a stati e stati multipli
- 3. Macchine a stati basati su Coroutine
- 4. Macchine di stato in C
- 5. Progettazione per macchine a stati multilivello e gerarchici
- 6. C++ generatore di macchine di stato
- 7. Implementazione di macchine a stato gerarchico in C
- 8. C++ scrivere a fronte lima
- 9. Compilatore a stati finiti
- 10. Come scalare MySQL con più macchine?
- 11. Come faccio a scrivere questo con RSpec
- 12. Prestazioni RDP con macchine Azure
- 13. C++ Stati Puntatore Funzione Definizione
- 14. Graffetta + Rotaie con macchine con carico bilanciato
- 15. tutorial macchine stato
- 16. Come scrivere un articolo con dati di riferimento astratti che non sono stati ancora calcolati?
- 17. Come scrivere "C++" in LaTeX
- 18. GUI come macchina a stati finiti
- 19. Come testare una macchina a stati?
- 20. Come eseguire il benchmark delle macchine virtuali
- 21. struct con lo stesso nome ma diversi Stati in C++
- 22. Come iniziare a scrivere un visualizzatore musicale in C++?
- 23. Come scrivere a metà di un file in C++?
- 24. C# - Come faccio a leggere e scrivere un file binario?
- 25. Come iniziare a scrivere binding Perl per una libreria C++?
- 26. strtok su macchine a 64 bit
- 27. Come faccio a leggere/scrivere file compressi con gzip?
- 28. Come iniziare a scrivere applicazioni per iPad?
- 29. Come ereditare gli stati con mxml?
- 30. Come scrivere un file con C in Linux?
Buone informazioni. Grazie! – Nestor
+1 per gli apolidi. È una piccola biblioteca e una boccata d'aria fresca rispetto a Workflow Foundation (anche WF 4.0). –