http://stackoverflow.com/questions/1656404/c-sharp-producer-consumer