Articles of multithreading

Est-il prudent d’utiliser des variables globales C # dans un thread de travail en arrière-plan

Bonjour, je travaille sur une application de bureau simple. Elle doit gérer certaines opérations, telles que le chargement d’une page Web, susceptible de bloquer le thread principal. C’est pourquoi j’ai transféré le code à un travailleur en arrière-plan. Mon problème est qu’il existe une classe lourde nommée UCSProject, qui contient de nombreux champs chaîne et […]

Manière correcte de garantir la sécurité des threads lors de l’ajout à une liste à l’aide de la bibliothèque parallèle

Je boucle sur un tableau de chaînes de connexion et sur chaque boucle, j’extrais des informations et les ajoute à la liste. Maintenant, je veux utiliser la bibliothèque Parallel pour la rendre multithread, mais je ne suis pas sûr si la bibliothèque garantit que les écritures dans la liste seront thread-safe ou si j’ai besoin […]

Arrêt d’un service Windows multithread

J’ai un service Windows multi-thread dans .Net 3.5 et j’ai quelques problèmes pour arrêter le service correctement lorsque plusieurs threads sont créés. Auparavant, ce service ne créait qu’un seul thread pour effectuer tout le travail, et je l’ai simplement modifié pour qu’il soit multi-thread. Cela fonctionne parfaitement, mais lorsque le service est arrêté, si plusieurs […]

Est-il totalement sûr d’utiliser le modèle de ReaderWriterLockSlim.EnterXXX () avec la clause try-finally correspondante

La documentation MSDN et de nombreux exemples d’utilisation de la classe ReaderWriterLockSlim recommandent d’utiliser le modèle suivant: cacheLock.EnterWriteLock(); try { //Do something } finally { cacheLock.ExitWriteLock(); } Mais je suis curieux de savoir si c’est complètement sûr. Est-il possible qu’une exception se produise après l’acquisition du verrou, mais avant la déclaration try afin que le […]

Comment gérer ObservableCollection résultant d’une tâche parallélisée dans MVVM?

Je collecte des données dans une tâche distincte et je souhaite lier le résultat à un composant d’interface graphique à l’aide d’un ObservableCollection . Donc, mon code va quelque chose comme ça: private ObservableCollection _items; public ObservableCollection Items { get { return _items; } set { if (_items.Equals(value)) { return; } _items = value; RaisePropertyChanged(“Items”); […]

Gui libérant lors de l’utilisation du filetage

Je suis coincé et espérais que quelqu’un pourrait m’aider. J’ai créé une classe / interface graphique avec une barre de chargement configurée de sorte que, lorsqu’une tâche est en cours, je puisse l’afficher à l’utilisateur. Dans l’une de mes classes d’interface graphique, dans le constructeur de la première ligne, je crée une nouvelle instance de […]

TPL Comment effectuer un “rappel”

J’ai une petite application qui doit tester les chaînes de connexion SQL pour un certain nombre de connexions (chacune effectuée une à la fois). Pour ce faire, je règle temporairement ConnectionTimeout = 5 afin d’éviter une longue attente si la connexion n’est pas valide et que ConnectionTimeout = 0 (attendre indéfiniment), par exemple. Pour éviter […]

Combien de temps dure le délai entre Control.Invoke () et l’appel de son délégué?

J’ai un moteur de code qui lit de longs fichiers WAV en jouant successivement de petits morceaux à l’aide des méthodes API waveOutOpen et waveOutWrite. Afin de mettre à jour mon interface utilisateur lors de la lecture du fichier, à partir de la fonction de rappel à la fin de la lecture de chaque tampon, […]

C #: Comment tester une classe de travailleurs threadés de base

J’essaie de tester des trucs multi-thread, mais je ne sais pas trop comment commencer. Je suis sûr que je trouverai plus de choses plus facilement si je pouvais tout simplement commencer, alors je me demandais si quelqu’un pourrait m’aider à écrire un scénario de test NUnit pour ce cours simple: class Worker { public event […]

SQL Server Compact Edition 4 – AccessViolationException

Je construis une application .NET 4 WPF en utilisant d’abord le code Entity Framework et SQL Server Compact 4.0. J’essaie d’appeler DbContext.SaveChanges() sur un thread en arrière-plan pour éviter de bloquer l’interface utilisateur, mais DbContext.SaveChanges() parfois l’exception suivante: System.AccessViolationException occurred Message=Attempted to read or write protected memory. This is often an indication that other memory […]