state machine in c#(  boost statechart like )