Anonymous functions (lambda expressions and anonymous methods) have to be converted to a specific delegate type, whereas Dispatcher.BeginInvoke just takes Delegate. There are two options for this...
- Still use the existing - BeginInvokecall, but specify the delegate type. There are various approaches here, but I generally extract the anonymous function to a previous statement:
 - Action action = delegate() { 
     this.Log.Add(...);
};
Dispatcher.BeginInvoke(action);
 
- Write an extension method on - Dispatcherwhich takes- Actioninstead of- Delegate:
 - public static void BeginInvokeAction(this Dispatcher dispatcher,
                                     Action action) 
{
    Dispatcher.BeginInvoke(action);
}
 - Then you can call the extension method with the implicit conversion - this.Dispatcher.BeginInvokeAction(
        delegate()
        {
            this.Log.Add(...);
        });
 
I'd also encourage you to use lambda expressions instead of anonymous methods, in general:
Dispatcher.BeginInvokeAction(() => this.Log.Add(...));
EDIT: As noted in comments, Dispatcher.BeginInvoke gained an overload in .NET 4.5 which takes an Action directly, so you don't need the extension method in that case.