Je suis en train de modifier une application écrite en C# qui fait un usage intensif du multi-threading pour lire des fichiers audio et afficher des images à un utilisateur. Étant donné qu'il est multi-thread, j'ai besoin d'utiliser la méthode Invoke souvent pour modifier les éléments de formulaire. Je suis en train de tomber sur un schéma avec lequel je ne suis pas très à l'aise, où je me retrouve à écrire de petites méthodes de délégation fréquentes qui ne font qu'une chose. Un exemple de ceci est comme suit:Qu'est-ce qui est considéré comme une bonne pratique de programmation dans les applications winform multithread avec utilisation déléguée?
delegate void setImageCallback(Image img);
private void setImage(Image img)
{
this.pictureBox1.Image = img;
}
private void someOtherMethod()
{
...
if (this.pictureBox1.InvokeRequired)
{
this.Invoke(new setImageCallback(setImage), Image.FromFile("example.png");
}
else
{
this.pictureBox1.Image = Image.FromFile("example.png");
}
...
}
Comment les gens gèrent généralement ces situations, de sorte que vous ne trouvez pas vous écrire un nombre absurde de délégués et méthodes juste pour rester thread-safe? Évidemment, la consolidation de méthodes similaires est géniale, mais si je dois potentiellement mettre à jour chaque élément de formulaire sur mon formulaire, je ne souhaite pas avoir de délégué et de méthode "modify" pour chacun de ces éléments.
Merci.
http://stackoverflow.com/questions/2367718/c-automating-the-invokerequired-code- pattern/2367888 # 2367888 –