KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm writing a networked application. Messages are sent over the transport as such: Network.SendMessage (new FirstMessage() ); I can register an event handler to be called when this message type arrives, like so: Network.RegisterMessageHandler<FirstMessage> (OnFirstMessageReceived); And the event gets fired: public void OnFirstMessageReceived(EventArgs<FirstMessageEventArgs> e) { } I'm writing a custom authentication procedure for my networked application, which requires around five messages to complete. Without using the Task Parallel Library, I would be forced to code the next step of each procedure in the preceding event handler, like so: public void OnFirstMessageReceived(EventArgs<FirstMessageEventArgs> e) { Network.SendMessage( new SecondMessage() ); } public void OnSecondMessageReceived(EventArgs<SecondMessageEventArgs> e) { Network.SendMessage( new ThirdMessage() ); } public void OnThirdMessageReceived(EventArgs<ThirdMessageEventArgs> e) { Network.SendMessage( new FourthMessage() ); } public void OnFourthMessageReceived(EventArgs<FourthMessageEventArgs> e) { // Authentication is complete } I don't like the idea of jumping around the source code to code a portion of this and a portion of that. It's hard to understand and edit. I hear the Task Parallel Library substantially simplifies this solution. However, many of the examples I read using the Task Parallel Library were related to starting a chain of active tasks. What I mean by ' active ', is that each task could start when called explicitly, like so: public void Drink() {} public void Eat() {} public void Sleep() {} Task.Factory.StartNew( () => Drink() ) .ContinueWith( () => Eat() ) .ContinueWith( () => Sleep
Tags (comma-separated)
Save Edits
Cancel