Blocks
are specialized wrappers for delegates that act as atomic building blocks for a Flow
. Ideally, each atomic action within a Flow
should be wrapped by and execute inside of a Block
of some sort.
The delegate input is the central part of the Block
and can be a multitude of various constructs, such as:
- A method defined somewhere in your class library or its dependencies.
- A
delegate
. - An
Action
. - A
Func
. - A lambda expression.
Blocks
track start and end execution times, emit internal logging events, encapsulate their own retry logic and timeout logic, and more.