I am developing an application where the users can execute tasks / workflows. Each task is made up of a queue of actions to be executed. I want to be able to be able to have user input after the workflow is started.
Example:
- Task starts
- Action1 starts
- Action1 ends
- Action2 starts
- Action2 ends
- Action3 needs user input (UI opens window to get user input)
- Action3 gets user input
- Action3 starts
- Action3 ends
- Task ends
I am developing this i C# and I am aware of Workflow Foundation and tasks in C#. They may have what I need, but I am also interested in hearing about a design pattern for doing this from scratch.
I think the following articles can help you with the async task part:
The Task-based Asynchronous Pattern
TPL and Traditional .NET Asynchronous Programming
What you have described is the Sequence Workflow Pattern.
There are more Workflow Patterns at the Workflow Patterns initiative and in MSDN Magazine.