Made all handler return Task. Refactored ICommandBroker to ICommandHandlerFactory so that we can give our dispatcher visibility of the handlers themselves. This means we can have our dispatch logic implemented in a single place, and we can also handle things like renewing the lock on BrokeredMessage classes without exposing those to the handler classes.
Fixed dynamic method invocation.
Removed DefaultBatchSizeSetting as we now use the internal QueueClient's message pump and it only cares about the number of messages being handled concurrently.
Refactored competing event handlers to new pattern.
Refactored multicast event handlers.
Refactored multicast request handlers to new pattern.
Refactored request handlers to new pattern.
Disabled warning CS1998 (I don't care if async Task methods run synchronously. The code looks nicer than wrapping simple little methods in Task.Run(...) everywhere.
Started fixing broken tests.
Fixed multicast request dispatcher tests.
All unit tests pass again :)
Integration tests all pass again :)
Ignored CS1998 warning.
No more compiler warnings.
Enabled CA on infrastructure and message contracts.
Added more dispatcher tests. Appear to have found a bug :)
Disabled code analysis on core project. Looks like VS2012 can't handle dynamic dispatch properly.
Adjusted namespaces.
^E^C
Updated readme with async usage.