public event EventHandler <ProcessEventArgs> ProcessCompleted; // event public void StartProcess() { var data = new ProcessEventArgs(); try { Console.WriteLine("Process Started!"); data.IsSuccessful = true; data.CompletionTime = DateTime.Now; // some code here.. // uncomment these 2 lines to trigger a failure //List<string> nullList = null; //nullList.Add("failllll"); OnProcessCompleted(data); } catch (Exception e) { data.IsSuccessful = false; data.CompletionTime = DateTime.Now; OnProcessCompleted(data); } }
protected virtual void OnProcessCompleted(ProcessEventArgs e) //protected virtual method { // if ProcessCompleted is not null then call delegate ProcessCompleted?.Invoke(this, e); }