Gibt es eine Möglichkeit, die delegierte Aufgabe in eine Inline zu integrieren, anstatt sie auf eine andere Funktion zu trennen?Gibt es eine Möglichkeit, eine Funktion an einen Action-Delegaten zu binden und gleichzeitig darauf zu verweisen?
Originalcode:
private void ofdAttachment_FileOk(object sender, CancelEventArgs e)
{
System.Threading.ThreadPool.QueueUserWorkItem((o) => Attach());
}
void Attach() // I want to inline this function on FileOk event
{
if (this.InvokeRequired)
{
this.Invoke(new Action(Attach));
}
else
{
// attaching routine here
}
}
wollte ich es so (keine Notwendigkeit, eine eigene Funktion erstellen) sein:
private void ofdAttachment_FileOk(object sender, CancelEventArgs e)
{
Action attach = delegate
{
if (this.InvokeRequired)
{
// but it has compilation here
// "Use of unassigned local variable 'attach'"
this.Invoke(new Action(attach));
}
else
{
// attaching routine here
}
};
System.Threading.ThreadPool.QueueUserWorkItem((o) => attach());
}
danke, das funktioniert^_^es ist nur ein wenig verwirrend, warum C# als nicht zugewiesen – Hao
erkannt Zur Laufzeit wird die rechte Seite der Zuordnung vor der linken Seite ausgewertet. Daher sieht der Teil des Compilers, der für diese Warnung verantwortlich ist, wahrscheinlich, dass wir versuchen, den Wert der Variablen innerhalb der rechten Seite des Ausdrucks in der Zeile zu verwenden, der wir ihn zuweisen, also bei der Auswertung der RHS nicht wurde noch nicht zugewiesen. Natürlich, da der Compiler es in eine Schließung herausheben würde, wäre es sowieso ok - ich nehme an, der Compiler weiß nicht, wie er es ändern wird, wenn er die Warnung ausgibt. –