Skip to content

FR CSharp Concurrency

Codex edited this page Oct 11, 2026 · 2 revisions

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

Threads, tâches et synchronisation

Manuel C# · Exemples UO

L'asynchronie vous permet d'attendre, la concurrence vous permet de servir plusieurs tâches, le parallélisme vous permet de les exécuter simultanément. Task.Run adapté aux travaux informatiques ; en soi, il ne rend pas les objets de jeu thread-safe. UI et le monde du jeu doivent être servis par l'hôte API fourni.

Exemple simple (Example.cs)

Enregistrez cet exemple séparément dans Example.cs. Exécutez-le indépendamment des autres exemples de cette page.

Example.cs:

// PROJECT-EXAMPLE
int count = 0;
System.Threading.Tasks.Parallel.For(0, 3, _ => System.Threading.Interlocked.Increment(ref count));
System.Console.WriteLine(count);

Résultat:

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 protège la section synchrone, SemaphoreSlim.WaitAsync - attente asynchrone d'accès, Interlocked - opérations atomiques individuelles. Ne maintenez pas le verrou pendant un long travail externe et n'exécutez pas de tâches oubliées accédant à la session une fois le script terminé.

Documentation officielle : Threads, tâches et synchronisation - Microsoft Learn.

Clone this wiki locally