KeyLocks
1.0.0
Führen Sie den Code mit Sperren aus, die auf verschiedenen Objekttypen basieren, z. B. Zeichenfolgen, Zahlen und Daten.
Sperren Sie den Code für bestimmte Werte selektiv, nicht global für alle ausführenden Code.
private static KeyLock<string> _keyLock = new KeyLock<string>();
public void Main()
{
Parallel.Invoke(
() => { UpdateData("entity-123", "First new value"); },
() => { UpdateData("entity-123", "Second new value"); }, // This will await line above
() => { UpdateData("another-entity-456", "Another new value"); },
() => { UpdateData("yet-another-entity-789", "Yet another new value"); });
}
private void UpdateData(string id, string value)
{
_keyLock.RunWithLock(id, () =>
{
// Execute locked code
});
}
Methode 1 und 2 UpdateData Parallel.Invoke ausgeführt.
Der Typ- NameLock ist ein Kurzschluss für KeyLock<string> .
Es ist standardmäßig, wenn es sich um eine Fallempfindlichkeit handelt, die jedoch durch Übergeben von StringComparer.InvariantCultureIgnoreCase als Konstruktor-Argument geändert werden kann.