Articles of multithreading

Ce fil de queue .NET sans locking est-il sécurisé?

Ma question est la suivante: la classe incluse ci-dessous pour une classe de queue à auteur unique et à auteur unique est-elle thread-safe? Ce type de queue est appelé sans locking, même s’il sera bloqué si la queue est remplie. La structure de données a été inspirée par l’implémentation par Marc Gravell d’une queue de […]

Opération cross-thread non valide

Je continue à recevoir l’erreur suivante lors du débogage. Cross-thread operation not valid: Control ‘richTextBoxReceivedMsg’ accessed from a thread other than the thread it was created on. Voici le code qu’il pointe vers: public void OnDataReceived(IAsyncResult asyn) { try { SocketPacket socketData = (SocketPacket)asyn.AsyncState; int iRx = 0; // Complete the BeginReceive() asynchronous call by […]

Empêcher les exceptions provenant de composants tiers de planter l’application dans son intégralité

J’écris une application multithread qui s’appuie sur des DLL tierces. Mon problème est que lorsque j’utilise un object de la bibliothèque tierce, s’il génère une exception lors de son exécution, je ne parviens pas à l’attraper, il bouillonne et tue toute l’application. J’ai beaucoup de threads différents, chacun utilisant son propre object de cette bibliothèque […]

Y a-t-il des inconvénients à verrouiller une collection par rapport à syncRoot?

Je me demande s’il y a des inconvénients à verrouiller une collection telle qu’une List , un HashSet ou un Dictionary plutôt qu’un simple object . Remarque: dans les exemples suivants, c’est le seul endroit où les verrous se produisent. Ils ne sont pas verrouillés à plusieurs endroits, mais la méthode statique peut être appelée […]

Traitement d’une file d’éléments de manière asynchrone en C #

J’essaie de créer un système qui traite une queue de travail. Le système a les spécifications suivantes: Le système a deux composants, un assignateur de travail et un ouvrier. Il existe une limite supérieure définie pour le nombre de travailleurs en même temps. Cette limite supérieure est supérieure à un. Pour éviter les problèmes de […]

Comment puis-je remplir en toute sécurité avec des données et Refresh () un DataGridView dans une application multithread?

Mon application a un object DataGridView et une liste de type MousePos. MousePos est une classe personnalisée contenant les coordonnées X, Y de la souris (de type “Point”) et un décompte courant de cette position. J’ai un fil (System.Timers.Timer) qui déclenche un événement toutes les secondes, vérifie la position de la souris, ajoute et / […]

Quelle est l’utilisation correcte de SQLite sur le locking ou async

Nous utilisons Xamarin pour écrire du code C # avec SQLite pour Android et iOS. Cependant, sur l’utilisation de sqlite, il semble que j’ai un malentendu conceptuel: Quelles sont les meilleures pratiques pour SQLite sur Android? Selon la réponse de stackoverflow, il est indiqué – une connexion d’assistance et une connexion à une firebase database. […]

garantir que la valeur actualisée de la variable est toujours visible pour plusieurs threads sur un système multiprocesseur

J’utilise une telle configuration: .NET Framework 4.5 Windows Server 2008 R2 HP DL360p Gen8 (2 * Xeon E5-2640, x64) J’ai un tel domaine quelque part dans mon programme: protected int HedgeVolume; J’accède à ce champ à partir de plusieurs threads. Je suppose qu’en tant que système multiprocesseur, il est possible que ces threads s’exécutent sur […]

Devrais-je remarquer une différence entre l’utilisation de tâches et de threads dans .Net 4.0?

J’ai mis à jour mon code pour utiliser des tâches au lieu de threads …. En ce qui concerne l’utilisation de la mémoire et du processeur, je ne remarque aucune amélioration sur le PC multicœurs. Est-ce attendu? Mon application démarre essentiellement des threads / tâches dans différents objects lorsqu’elle s’exécute … Tout ce que je […]

Quand faut-il appeler Task.ContinueWith avec TaskScheduler.Current en tant qu’argument?

Nous utilisons cet extrait de code de StackOverflow pour générer une tâche qui se termine dès que la première d’une série de tâches se termine avec succès. En raison de la nature non linéaire de son exécution, async/await n’est pas vraiment viable et ce code utilise donc ContinueWith() place. Cependant, il ne spécifie pas un […]