Tested multi-threading support. One can create an EventingSystem, use it in the constructor to multiple threads, and they work. Also added the EventingSystem.EndCondition interface, with APIs to register end conditions to be tested prior to every event delivery (sounds expensive!) and every time an empty queue is encountered. For an empty queue, the test is re-invoked every tenth of a second while the queue is empty.
Tested multi-threading support. One can create an EventingSystem,
use it in the constructor to multiple threads, and they work. Also added the
EventingSystem.EndCondition interface, with APIs to register end conditions
to be tested prior to every event delivery (sounds expensive!) and every time
an empty queue is encountered. For an empty queue, the test is re-invoked every
tenth of a second while the queue is empty.

glfrazier/EventFramework,glfrazier/EventFramework