O'Reilly logo
  • Baydr Earles thinks this is interesting:

public class ImageProcessor
{
  public event EventHandler<ProcessedImageEventArgs> ProducedGrayScaleImage = delegate { };
 
  public void ProcessFile(string filename)
  {
    Task.Run(() =>LoadAndToGrayScale(filename))
        .ContinueWith(toGrayTask =>ProducedGrayScaleImage(this,
                  &#...

From

Cover of Pro Asynchronous Programming with .NET

Note

Firing and event on task completion without blocks