Articles of multithreading

Qu’est-ce qu’une méthode thread-safe pour lire / écrire une propriété C # dans une classe?

Je suis nouveau en C #. En Java, je peux faire en lecture / écriture d’un membre de la classe Java en ayant le mot clé ‘synchronized’ dans la méthode setter / getter. Pouvez-vous s’il vous plaît me dire quelle est la bonne façon de faire la même chose en C #? En C #, […]

async vs threading, quand utiliser chaque option?

Cette page, http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx , dans la section des threads, indique qu’une méthode asynchrone ne s’exécute pas dans un autre thread. , Je voudrais utiliser Task.Run. Donc, je comprends que l’async et le threading sont deux choses différentes, et que chaque option est bonne dans certaines situations. Je voudrais savoir quand est préférable d’utiliser async et […]

Limiter le nombre de threads du pool de threads

J’utilise ThreadPool dans mon application. J’ai d’abord défini la limite du pool de threads en utilisant les éléments suivants: ThreadPool.SetMaxThreads(m_iThreadPoolLimit,m_iThreadPoolLimit); m_Events = new ManualResetEvent(false); et puis j’ai mis en queue les emplois en utilisant le suivant WaitCallback objWcb = new WaitCallback(abc); ThreadPool.QueueUserWorkItem(objWcb, m_objThreadData); Ici abc est le nom de la fonction que j’appelle. Après cela, […]

Grande taille de l’object ServicePoint après plusieurs heures d’envoi d’une requête HTTP en parallèle

Nous utilisons HttpClient pour envoyer des demandes à une API Web distante en parallèle: public async Task PostAsync(HttpRequestInfo httpRequestInfo) { using (var httpClient = new HttpClient()) { httpClient.BaseAddress = new Uri(httpRequestInfo.BaseUrl); if (httpRequestInfo.RequestHeaders.Any()) { foreach (var requestHeader in httpRequestInfo.RequestHeaders) { httpClient.DefaultRequestHeaders.Add(requestHeader.Key, requestHeader.Value); } } return await httpClient.PostAsync(httpRequestInfo.RequestUrl, httpRequestInfo.RequestBody); } } Cette API peut être appelée […]

Une boucle de fil sans fin classique utilisant des tâches?

Donné est un scénario de thread très commun: Déclaration private Thread _thread; private bool _isRunning = false; Début _thread = new Thread(() => NeverEndingProc()); thread.Start(); Méthode private void NeverEndingProc() { while(_isRunning) { do(); } } Peut-être utilisé dans un écouteur TCP asynchrone qui attend des rappels jusqu’à ce qu’il soit arrêté en laissant le thread […]

C # empêche l’access à toutes les méthodes d’object à partir d’autres threads

J’ai un object qui ne doit être utilisé que par un seul thread à la fois. Par exemple, mon object contient 3 méthodes A , B et C et je souhaite verrouiller l’object (toutes les méthodes / tous les atsortingbuts sont verrouillés) si un thread accède à la méthode A La difficulté principale est que […]

Cet exemple de fil est-il sûr?

Supposons que j’ai une classe singleton qui joue le rôle de cache de données. Plusieurs threads liront dans le cache, et un seul thread le rafraîchira périodiquement. Cela ressemble à quelque chose comme ça: public sealed class DataStore { public static DataStore Instance { get { return _instance; } } public Dictionary FooBar { get; […]

Besoin d’aide dans Monitor.PulseAll ()

Quelqu’un peut-il m’expliquer avec un exemple simple pour gérer Monitor.PulseAll (). J’ai déjà cité quelques exemples de ce stackoverflow. Comme je suis débutant, je sens que ceux-ci sont au-dessus de ma tête.

AsyncWaitHandle.WaitOne bloque-t-il le thread CLR? Ou crée-t-il un port d’achèvement des E / S?

J’ai cette question, AsyncWaitHandle.WaitOne bloque-t-il le thread CLR? ou crée-t-il un port d’achèvement des E / S? Par exemple, lorsque j’exécute mon application, je lance une tâche ‘A’ qui initialise certaines données. Lorsque de nouvelles demandes arrivent, je veux qu’ils attendent que ‘A’ soit terminé pour pouvoir effectuer un IAsyncResult.AsyncWaitHandle.WaitOne , mais. .. bloque-t-il le […]

Barre de progression pour les tâches de longue durée en C #

Mon application exécute des requêtes de firebase database qui peuvent prendre beaucoup de temps. Lors de l’exécution de ces requêtes, mon application semble se figer et il semble que l’application a cessé de fonctionner. Je dois utiliser progressbar pour éviter ce problème, mais je ne suis pas sûr de savoir comment prévoir le temps d’exécution […]