保持U.I使用线程更新

时间:2010-08-24 11:05:53

标签: c# multithreading loops

我有很多长时间运行的活动,并认为将此活动发布到另一个线程将是让我的U.I能够更新以显示其当前状态的好方法。

但是,当我使用以下内容时:

Thread t = new Thread(() =>
{
   /* do magic here */
});

线程内部的foreach循环内部没有任何内容完成。但是,当我不使用线程时,工作就完成了,所以我知道循环不是问题。

有什么建议吗?

4 个答案:

答案 0 :(得分:1)

您可能还想看看BackgroundWorker,因为它很好地封装了所有内容。

答案 1 :(得分:0)

你甚至开始了吗?

newThread.Start();

在您提供的示例中,您只需声明它。

另外请记住,如果您使用WinForms,您将无法直接从创建它的任何线程更新UI;例如,从foreach循环中修改进度条或标签控件。

答案 2 :(得分:0)

你需要开始,t.Start();

创建实例只是为线程创建托管包装器。调用Start将启动运行并最终使代码在单独的线程上运行。

答案 3 :(得分:0)

可能你没有启动线程,所以它还没有运行。

但是,在您的情况下,使用BackgroundWorker类通常会更好,这将为您创建线程,并提供线程安全的方式来更新UI,并使线程的进度工作。