lock auf anonyme Klasse einer anonymen Methode?

21/05/2008 - 09:44 von Markus Springweiler | Report spam
Hallo,

gibt es in C# ein Sprachkonstrukt, um innerhalb einer anonymen Methode
(also auch Lambdas) die umgebende anonyme Klasse (nennt man das Closure?)
zu erreichen oder zumindest zu sperren?

Beispiel:
static void Main(string[] args)
{
int Total = 0;
Parallel.For(0, 7, i =>
{
lock ( Total )
Total = Total + i;
});
Console.WriteLine("Total is " + Total.ToString());
Console.ReadLine();
}

Das kompiliert natürlich nicht, weil "Total" ein Wertetyp ist, welcher
nicht mit "lock" verwendet werden kann -- aber im kompilierten Code (ohne
das lock) wird sowohl "Total" als auch die Lambda-Methode in eine anonyme
Klasse verfrachtet, und in Main wird eine Instanz davon erzeugt.
Sicht der anonymen Klasse funktionieren.

/\/\arkus.
 

Lesen sie die antworten

#1 Elmar Boye
23/05/2008 - 18:41 | Warnen spam
Hallo Markus,

Markus Springweiler schrieb:
gibt es in C# ein Sprachkonstrukt, um innerhalb einer anonymen Methode
(also auch Lambdas) die umgebende anonyme Klasse (nennt man das Closure?)
zu erreichen oder zumindest zu sperren?

Beispiel:
int Total = 0;
Parallel.For(0, 7, i =>
{
lock ( Total )
Total = Total + i;
});



Eine direkte Lösung für das Problem findest Du in dem Artikel:
<URL:http://msdn.microsoft.com/en-us/mag...0.aspx>

unter "Aggregation". Und noch anderes mehr.

Gruß Elmar

Ähnliche fragen