Skip to content

DE CSharp Keyword lock

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C#: lock

Handbuch C# · Praktischer Leitfaden

Führt einen gegenseitigen Ausschlussblock für das angegebene Objekt oder System.Threading.Lock aus. Erlaubt kein Warten in einem blockierten Block.

Einfaches Beispiel (Example.cs)

Speichern Sie dieses Beispiel separat als Example.cs. Führen Sie es unabhängig von den anderen Beispielen dieser Seite aus.

Example.cs:

// PROJECT-EXAMPLE
var gate = new object();
int count = 0;
lock (gate) { count++; }
System.Console.WriteLine(count);

Ergebnis:

1

Syntax

lock (gate) { ... }

Beispiel 1: Grundform

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        object gate = new(); int counter = 0;
        Parallel.For(0, 20, _ => { lock (gate) { counter++; } });
        Console.WriteLine(counter);
    }
}

Beispiel 2: eine weitere praktische Form

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        System.Threading.Lock gate = new();
        List<int> values = [];
        Parallel.For(0, 10, i => { lock (gate) { values.Add(i); } });
        Console.WriteLine(values.Count);
    }
}

Offizielle Quelle: Microsoft Learn.

Clone this wiki locally