The first software programs were entirely driven by a task. Typically, a developer would create a routine and that routine would be called in the scope of solving a larger task. When all of the routines were called, the task would end and generate a result. This result would be displayed and the program might run another task. When the GUI arrived, however, the programming model changed dramatically. Instead of expecting an answer, the system would have to wait and perform actions when they were requested . This is called event- driven programming , which is similar to message-based programming. With event-driven programming the idea is to react to events. An event could be the arrival of new data, clicking of a mouse, adding of a new user , etc. The objective of this chapter is to introduce, explain and show some solutions using message driven software.