Nicht in der anonymen Methode auf Typ 'System.Delegieren', weil es keine Stellvertretung geben
Ich möchte diesen code ausführen, werden auf der main-thread im WPF app und immer Fehler ich kann nicht herausfinden, was falsch ist:
private void AddLog(string logItem)
{
this.Dispatcher.BeginInvoke(
delegate()
{
this.Log.Add(new KeyValuePair<string, string>(DateTime.Now.ToLongTimeString(), logItem));
});
}
- Kuck mal hier stackoverflow.com/questions/4936459/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anonyme Funktionen (lambda-Ausdrücke und anonyme Methoden) umgewandelt werden müssen, um eine bestimmten delegate-Typ, während
Dispatcher.BeginInvoke
dauert nurDelegate
. Es gibt zwei Optionen für diese...Weiterhin die bestehenden
BeginInvoke
nennen, aber Sie geben die Stellvertretung Art. Es gibt verschiedene Ansätze hier, aber ich in der Regel entpacken Sie die anonym-Funktion zu einer früheren Anweisung:Schreiben Sie eine extension-Methode auf
Dispatcher
nimmtAction
stattDelegate
:Dann können Sie rufen Sie die extension-Methode mit der impliziten Konvertierung
Ich würde auch empfehlen Ihnen die Verwendung von lambda-Ausdrücken anstelle von anonymen Methoden, im Allgemeinen:
EDIT: Wie bereits angemerkt in den Kommentaren,
Dispatcher.BeginInvoke
gewonnen, eine überlastung im .NET 4.5, das dauert einAction
direkt, so dass Sie nicht brauchen, die extension-Methode in diesem Fall.Können Sie auch MethodInvoker für diese: