gpt4 book ai didi

c# - 在使用委托(delegate)的多线程 winform 应用程序中,什么被认为是好的编程实践?

转载 作者:太空狗 更新时间:2023-10-29 22:12:50 25 4
gpt4 key购买 nike

我正在修改一个用 C# 编写的应用程序,它大量使用多线程来向用户播放音频文件和显示图像。鉴于它是多线程的,我需要经常使用 Invoke 方法来更改表单元素。我遇到了一种我不太适应的模式,我发现自己经常编写通常只做一件事的小型委托(delegate)方法。这方面的一个例子如下:

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");
}
...
}

人们通常如何处理这些情况,以便您不会发现自己编写了荒谬数量的委托(delegate)和方法只是为了保持线程安全?显然,类似方法的整合很好,但如果我可能需要更新表单上的每个表单元素,我不想为每个元素都设置一个“修改”委托(delegate)和方法。

谢谢。

最佳答案

一个很好的例子是 here .

this.BeginInvoke( (Action) (()=>
{
pictureBox1.Image = Image.FromFile("example.png");
}));

关于c# - 在使用委托(delegate)的多线程 winform 应用程序中,什么被认为是好的编程实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com