private void If_ObjectC_Changed_Then_Change_ObjectB(object sender, TreeChangedEventArgs args)
 {
     //LOG: using(this.LogBlock(Flow.Enter.EventHandler.Current.Parameter("Source",args.OriginalSource.GetType().Name)))
     {
         if (args.OriginalSource == this.B.C)
         {
             using (BusinessObjectTreeHelper.PauseTreeChangedEvents()) {
                 this.B.Change();
             }
         }
     }
 }
 public void CommonB()
 {
     //LOG: using(this.LogBlock(Flow.Enter))
     {
         int treeChangesCount = 0;
         BusinessObjectTreeHelper.TreeChanged += delegate(object sender, TreeChangedEventArgs args) { treeChangesCount++; };
         var a = new ObjectA();
         using (BusinessObjectTreeHelper.PauseTreeChangedEvents()) {
             a.B.C.Change();
         }
         Debug.WriteLine("=>TreeChangesCount: " + treeChangesCount);
     }
 }
        public void CommonE()
        {
            int treeChangesCountA = 0, treeChangesCountB = 0, treeChangesCountC = 0;
            var a = new ObjectA();

            a.TreeChanged     += delegate(object sender, TreeChangedEventArgs args) { treeChangesCountA++; };
            a.B.TreeChanged   += delegate(object sender, TreeChangedEventArgs args) { treeChangesCountB++; };
            a.B.C.TreeChanged += delegate(object sender, TreeChangedEventArgs args) { treeChangesCountC++; };
            using (BusinessObjectTreeHelper.PauseTreeChangedEvents()) {
                a.B.C.Change();
            }
            Debug.WriteLine("=>TreeChangesCountA: " + treeChangesCountA);
            Debug.WriteLine("=>TreeChangesCountB: " + treeChangesCountB);
            Debug.WriteLine("=>TreeChangesCountC: " + treeChangesCountC);
        }
 public void RaiseTreeChangedEventWithHelper()
 {
     BusinessObjectTreeHelper.TreeChanged += delegate(object sender, TreeChangedEventArgs args) { Debug.WriteLine("=>" + new StackTrace()); };
     BusinessObjectTreeHelper.RaiseTreeChangedEventWithHelper();
 }