Changeset 1808


Ignore:
Timestamp:
Aug 13, 2010, 9:49:35 AM (11 years ago)
Author:
kopal
Message:
  • Asynchronous delegates can now be switched via static Property to synchronous (ProgressChanged,PropertyChanged,StatusChanged,GuiLogMessage) => needed by WorkspaceManager
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPluginBase/Miscellaneous/EventsHelper.cs

    r947 r1808  
    2626  public class EventsHelper
    2727  {
     28   
     29    private static bool asynchronousPropertyChanged = true;
     30    public static bool AsynchronousPropertyChanged {
     31        get { return asynchronousPropertyChanged; }
     32        set { asynchronousPropertyChanged = value; }
     33    }
     34
     35    private static bool asynchronousGuiLogMessage = true;
     36    public static bool AsynchronousGuiLogMessage
     37    {
     38        get { return asynchronousGuiLogMessage; }
     39        set { asynchronousGuiLogMessage = value; }
     40    }
     41
     42    private static bool asynchronousProgressChanged = true;
     43    public static bool AsynchronousProgressChanged
     44    {
     45        get { return asynchronousProgressChanged; }
     46        set { asynchronousProgressChanged = value; }
     47    }
     48
     49    private static bool asynchronousStatusChanged = true;
     50    public static bool AsynchronousStatusChanged
     51    {
     52        get { return asynchronousStatusChanged; }
     53        set { asynchronousStatusChanged = value; }
     54    }
     55
    2856    [MethodImpl(MethodImplOptions.NoInlining)]
    2957    public static void GuiLogMessage(GuiLogNotificationEventHandler del, IPlugin plugin, string message)
     
    4573        return;
    4674      }
    47       Delegate[] delegates = del.GetInvocationList();     
    48       AsyncCallback cleanUp = delegate(IAsyncResult asyncResult)
     75      Delegate[] delegates = del.GetInvocationList();
     76      if (AsynchronousGuiLogMessage)
     77      {         
     78          AsyncCallback cleanUp = delegate(IAsyncResult asyncResult)
     79          {
     80              asyncResult.AsyncWaitHandle.Close();
     81          };
     82          foreach (GuiLogNotificationEventHandler sink in delegates)
     83          {
     84              sink.BeginInvoke(plugin, args, cleanUp, null);
     85          }
     86      }
     87      else
    4988      {
    50         asyncResult.AsyncWaitHandle.Close();
    51       };
    52       foreach (GuiLogNotificationEventHandler sink in delegates)
    53       {
    54         sink.BeginInvoke(plugin, args, cleanUp, null);       
     89         
     90          foreach (GuiLogNotificationEventHandler sink in delegates)
     91          {
     92              sink.Invoke(plugin, args);
     93          }
    5594      }
    5695    }
     
    64103      }
    65104      Delegate[] delegates = del.GetInvocationList();
    66       AsyncCallback cleanUp = delegate(IAsyncResult asyncResult)
    67       {
    68         asyncResult.AsyncWaitHandle.Close();
    69       };
    70       foreach (PropertyChangedEventHandler sink in delegates)
    71       {
    72         sink.BeginInvoke(sender, args, cleanUp, null);
     105      if (AsynchronousPropertyChanged)
     106      {         
     107          AsyncCallback cleanUp = delegate(IAsyncResult asyncResult)
     108          {
     109              asyncResult.AsyncWaitHandle.Close();
     110          };
     111          foreach (PropertyChangedEventHandler sink in delegates)
     112          {
     113              sink.BeginInvoke(sender, args, cleanUp, null);
     114          }
     115      }
     116      else
     117      {         
     118          foreach (PropertyChangedEventHandler sink in delegates)
     119          {
     120              sink.Invoke(sender, args);
     121          }
    73122      }
    74123    }
     
    82131      }
    83132      Delegate[] delegates = del.GetInvocationList();
    84       AsyncCallback cleanUp = delegate(IAsyncResult asyncResult)
     133      if (AsynchronousProgressChanged)
    85134      {
    86         asyncResult.AsyncWaitHandle.Close();
    87       };
    88       foreach (PluginProgressChangedEventHandler sink in delegates)
     135            AsyncCallback cleanUp = delegate(IAsyncResult asyncResult)
     136            {
     137                asyncResult.AsyncWaitHandle.Close();
     138            };
     139            foreach (PluginProgressChangedEventHandler sink in delegates)
     140            {
     141                sink.BeginInvoke(plugin, args, cleanUp, null);
     142            }
     143      }
     144      else
    89145      {
    90         sink.BeginInvoke(plugin, args, cleanUp, null);
     146          foreach (PluginProgressChangedEventHandler sink in delegates)
     147          {
     148              sink.Invoke(plugin, args);
     149          }
    91150      }
    92151    }
     
    100159      }
    101160      Delegate[] delegates = del.GetInvocationList();
    102       AsyncCallback cleanUp = delegate(IAsyncResult asyncResult)
     161      if (AsynchronousStatusChanged)
    103162      {
    104         asyncResult.AsyncWaitHandle.Close();
    105       };
    106       foreach (StatusChangedEventHandler sink in delegates)
     163          AsyncCallback cleanUp = delegate(IAsyncResult asyncResult)
     164          {
     165              asyncResult.AsyncWaitHandle.Close();
     166          };
     167          foreach (StatusChangedEventHandler sink in delegates)
     168          {
     169              sink.BeginInvoke(plugin, args, cleanUp, null);
     170          }
     171      }
     172      else
    107173      {
    108         sink.BeginInvoke(plugin, args, cleanUp, null);
     174          foreach (StatusChangedEventHandler sink in delegates)
     175          {
     176              sink.Invoke(plugin, args);
     177          }
    109178      }
    110179    }
Note: See TracChangeset for help on using the changeset viewer.