Laden...

Locking in ASP.NET

Erstellt von deemax vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.246 Views
D
deemax Themenstarter:in
65 Beiträge seit 2004
vor 14 Jahren
Locking in ASP.NET

Hallo zusammen,

ich bräuchte mal Hilfe beim Locking in einer ASP.NET Funktion. Hier mein Aufbau in abgewandelter Form:

Speichern.aspx


Speichern()
{
	Starte Transaction
	{
		SpeicherBestellung()
		{
			GeneriereBestellNummer()
		}
	}
}

Das ganze läuft in einer Transaktion. Die Funktion SpeicherBestellung() ruft die Funktion GeneriereBestellNummer() auf. Eine Bestellnummer kann nur durch eine DB-Abfrage nach bestimmten Kriterien erstellt werden. Anschließend wird die Bestllnummer der Bestellung zugewiesen und die Bestellung wird gespeichert.
Nun können mehere Bestellungen gleichzeitig gespeichert werden und evtl. die gleiche Bestellnummer bekommen.
Wie muss ich das ganze in einer ASP.NET Application locken bzw. ist das so richtig?

Variante 1:


Speichern()
{
	Application.Lock();
	Starte Transaction
	{
		SpeicherBestellung()
		{
			GeneriereBestellNummer()
		}
	}
	Application.UnLock()
}

Variante 2:


private static object thisLock = new object()
Speichern()
{
	lock (thisLock)
	{
		Starte Transaction
		{
			SpeicherBestellung()
			{
				GeneriereBestellNummer()
			}
		}
	}	
}

D
deemax Themenstarter:in
65 Beiträge seit 2004
vor 14 Jahren

Hallo,

also Variante 1 kann ich wohl vergessen da sie nur das Application object lockt. Also müsste Variante 2 funktionieren. Da sich statische Variablen in ASP.NET wie Application Variablen verhalten.

R
119 Beiträge seit 2008
vor 14 Jahren

Ich würde variante 3 bevorzugen.

Das .Net Framework liefert dir für solche Probleme aber auch noch nettere Helferlein.

Monitor, Semaphore, usw...

D
deemax Themenstarter:in
65 Beiträge seit 2004
vor 14 Jahren

Hallo,

danke fürt die Antwort. Ich glaube ein lock() wird sowieso als Monitor.Enter etc. umgesetzt.