Repository navigation
FR CSharp Concurrency
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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.
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.
ClassicUO — Bad Newbie & C# Scripts IDE