Articles of multithreading

ThreadPool ne démarre pas de nouveau thread instantanément

J’ai un service Windows C # qui démarre divers objects (bibliothèques de classes). Chacun de ces objects possède sa propre logique de “traitement” qui démarre plusieurs threads de traitement de longue durée à l’aide de ThreadPool . J’ai un exemple, juste comme ceci: System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(WorkerThread_Processing)); Cela fonctionne très bien. Mon application fonctionne sans problèmes et […]

Le constructeur d’instance définit un membre statique, est-ce que le thread est sécurisé?

Je re-factorise du code et je me pose des questions sur l’utilisation d’un lock dans le constructeur d’instance. public class MyClass { private static Int32 counter = 0; private Int32 myCount; public MyClass() { lock(this) { counter++; myCount = counter; } } } Veuillez confirmer Les constructeurs d’instance sont thread-safe. L’instruction lock empêche l’access à […]

Mise à jour de l’interface graphique à partir d’un travailleur en arrière-plan

Le nom de la question est: ” Mise à jour de l’interface graphique à partir d’un agent d’arrière-plan “, mais le nom correct du monde doit être: ” Mise à jour de l’interface graphique à partir d’un agent d’arrière-plan OU rapportant plusieurs variables (autres qu’un entier) à partir de l’agent d’arrière-plan ” S’il vous plaît […]

Comment mettre à jour les zones de texte dans le fil principal à partir d’un autre fil?

Comment mettre à jour les zones de texte et les étiquettes dans le thread principal à partir d’un nouveau thread exécutant une classe différente. MainForm.cs (thread principal) public partial class MainForm : Form { public MainForm() { Test t = new Test(); Thread testThread = new Thread(new ThreadStart(t.HelloWorld)); testThread.IsBackground = true; testThread.Start(); } private void […]

Serrure corrompue? Impasse magique?

Je travaille avec un bug multethreading. Maintenant, je vois que, pour une raison quelconque, le locking n’est pas exécuté même une fois mais est verrouillé. J’ai le prochain cours: public sealed class Foo { private readonly object _lock = new object(); private static ulong _inCnt = 0; public void SomeMethod(ulong poo) { lock (_lock) { […]

Quel assemblage C # contient Invoke?

Question alternative: Pourquoi VS10 veut-il tant se plaindre d’Invoke? Dans ma quête permanente de faire en sorte que mon application devienne le meilleur programmeur C # au monde, j’ai décidé que les discussions étaient une bonne chose. MSDN propose un article utile sur les appels thread-safe aux contrôles , mais il (et apparemment tous les […]

Comment forcer une tâche à s’arrêter?

J’utilise une Task avec un CancellationTokenSource fourni et dans ma tâche, je vérifie toujours si l’annulation est demandée et arrête l’exécution si demandé – dans les parties du code que je contrôle. Le problème est qu’au sein de cette tâche, j’utilise des méthodes très longues de bibliothèques qui ne prennent pas en charge l’annulation et […]

Comment utiliser CancellationTokenSource pour fermer une boîte de dialog sur un autre thread?

Ceci est lié à mon autre question Comment annuler une impression en arrière-plan . J’essaie de mieux comprendre le modèle CancellationTokenSource et comment l’utiliser au-delà des limites de thread. J’ai une fenêtre principale (sur le thread d’interface utilisateur) où le code derrière fait: public MainWindow() { InitializeComponent(); Loaded += (s, e) => { DataContext = […]

Threads WPF: puis-je mettre à jour le contexte de données d’un contrôle dans un thread non UI?

Pouvons-nous mettre à jour le contexte de données d’un contrôle WPF dans un thread non-UI? Supposons que nous ayons une Label qui a MyClass comme contexte de données et MyProperty Content à MyProperty : , où MyClass est simplement: public class MyClass : INotifyPropertyChanged { int _myField; public int MyProperty { get { return _myField; […]

Quelle est la bonne façon d’empêcher la réentrance et de garantir l’acquisition d’un verrou pour certaines opérations?

Je conçois une classe de base qui, une fois héritée, fournira des fonctionnalités métier dans un contexte dans un environnement multithread. Chaque instance peut avoir des opérations d’initialisation de longue durée, je souhaite donc rendre les objects réutilisables. Pour ce faire, je dois être capable de: Atsortingbuer un contexte à l’un de ces objects pour […]