Skip to content

DE CSharp Concurrency

Codex edited this page Oct 11, 2026 · 2 revisions

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

Threads, Aufgaben und Synchronisierung

Handbuch C# · Beispiele UO

Durch Asynchronität können Sie warten, durch Parallelität können Sie mehrere Aufgaben ausführen, durch Parallelität können Sie diese gleichzeitig ausführen. Task.Run geeignet für Rechenarbeiten; Es allein macht Spielobjekte nicht threadsicher. UI und die Spielwelt müssen vom bereitgestellten API-Host bedient werden.

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
int count = 0;
System.Threading.Tasks.Parallel.For(0, 3, _ => System.Threading.Interlocked.Increment(ref count));
System.Console.WriteLine(count);

Ergebnis:

3
int total = await Task.Run(() => Enumerable.Range(1, 100).Sum(), Cancellation);
UO.Print(total.ToString());
using System.Collections.Concurrent;
var values = new ConcurrentDictionary<string, int>();
values.TryAdd("items", 1);
values.AddOrUpdate("items", 1, (_, old) => old + 1);
UO.Print(values["items"].ToString());

lock schützt den synchronen Abschnitt, SemaphoreSlim.WaitAsync – asynchrones Warten auf Zugriff, Interlocked – einzelne atomare Operationen. Halten Sie bei längerer externer Arbeit keine Sperre und führen Sie keine vergessenen Aufgaben aus, indem Sie auf die Sitzung zugreifen, nachdem das Skript abgeschlossen ist.

Offizielle Dokumentation: Threads, Aufgaben und Synchronisierung – Microsoft Learn.

Clone this wiki locally