Listing 3

using namespace System;

delegate void CompleteHandler();

ref class Calculator
{
public:
   event CompleteHandler^ Completed;
   void Calculate()
   {
      // do some work
      Completed();
   }
};
ref class InformMe
{
public:
   void InformOne()
   {
      Console::WriteLine("InformMe::InformOne");
   }
   static void InformTwo()
   {
      Console::WriteLine("InformMe::InformTwo");
   }
};
void main()
{
   Calculator^ calc = gcnew Calculator;
   InformMe^ a = gcnew InformMe;
   CompleteHandler^ del; 
   del = gcnew CompleteHandler(a, &InformMe::InformOne);
   calc->Completed += del;
   del = gcnew CompleteHandler(&InformMe::InformTwo);
   calc->Completed += del;
   calc->Calculate();
}