public void Subscribe(DocumentProcessor7 processor)
 {
     processor.Processing += (sender, e) =>
     {
         GetMessages.Message += "<br>Tool2 has seen processing and canceled it.";
         if (e.Document.Text.Contains("document"))
         {
             e.Cancel = true;
         }
     };
     processor.Processed += (sender, e) => GetMessages.Message += "<br>Tool2 has seen that processing is complete.";
 }
 public void Subscribe(DocumentProcessor7 processor)
 {
     processor.Processing += processor_Processing;
     processor.Processed += processor_Processed;
 }
 public void Unsubscribe(DocumentProcessor7 processor)
 {
     processor.Processing -= processor_Processing;
     processor.Processed -= processor_Processed;
 }
 public static DocumentProcessor7 Configure8()
 {
     DocumentProcessor7 rc = new DocumentProcessor7();
     //匿名方法(Anonymous Methods),並回傳檢核是否通過
     rc.AddProcess(DocumentProcesses.TranslateIntoFrench,
         delegate(Document doc)
         {
             return !doc.Text.Contains("?");
         });
     //使用類似Function的方式
     Predicate<Document> predicate2 =
         delegate(Document doc)
         {
             return !doc.Text.Contains("?");
         };
     rc.AddProcess(DocumentProcesses.Spellcheck, predicate2);
     Predicate<Document> predicate3 = doc => !doc.Text.Contains("?");
     rc.AddProcess(DocumentProcesses.Repaginate, predicate3);
     //
     TrademarkFilter trademarkFilter = new TrademarkFilter();
     trademarkFilter.Trademarks.Add("Ian");
     trademarkFilter.Trademarks.Add("Griffiths");
     trademarkFilter.Trademarks.Add("millennium");
     //
     rc.AddProcess(trademarkFilter.HeighlightTrademarks);
     //
     return rc;
 }