交叉线程异常:如何在C#中从一个线程修改另一个线程?
我有一个多线程表单加载器,我正在尝试从一个线程修改另一个线程:交叉线程异常:如何在C#中从一个线程修改另一个线程?,c#,multithreading,C#,Multithreading,我有一个多线程表单加载器,我正在尝试从一个线程修改另一个线程: private void Form1_Load(object sender, EventArgs e) { button4.Enabled = false; progressBar1.Style = ProgressBarStyle.Marquee; progressBar1.MarqueeAnimationSpeed = 0; progressBar1
private void Form1_Load(object sender, EventArgs e)
{
button4.Enabled = false;
progressBar1.Style = ProgressBarStyle.Marquee;
progressBar1.MarqueeAnimationSpeed = 0;
progressBar1.Value = 1;
new Thread(new ThreadStart(CompareVersions)).Start();
}
如何设置在新线程中启动的CompareVersion
,他必须在上一个线程中设置progressBar1.MarqueeAnimationSpeed=1
启动字幕动画
步骤:
MarqueeAnimationSpeed
从新线程更新为1到线程(1)Visual Studio警告我,我无法从新线程修改现有线程。您可以将其定义为新方法或类,并调用它,在启动新线程之前,只需将MarqueeAnimationSpeed设置为1;最后,捕捉线程出口并重新设置MarqueeAnimationSpeed=0 我不明白你的问题。请澄清问题。你试过什么吗?@SriramSakthivel我想Simon在尝试时遇到了crossThreadException:progressBar1.MarqueeAnimationSpeed=1你是否尝试从另一个线程更新UI?这将不起作用,您必须封送访问或使用后台工作程序来引发已封送的事件。这并不是浪费,因为您不能直接与您创建的新线程交互,请在线程启动前设置该“标志”,并在线程关闭时重设为0。小把戏:)