我有很多长时间运行的活动,并认为将此活动发布到另一个线程将是让我的U.I能够更新以显示其当前状态的好方法。
但是,当我使用以下内容时:
Thread t = new Thread(() =>
{
/* do magic here */
});
线程内部的foreach循环内部没有任何内容完成。但是,当我不使用线程时,工作就完成了,所以我知道循环不是问题。
有什么建议吗?
答案 0 :(得分:1)
您可能还想看看BackgroundWorker,因为它很好地封装了所有内容。
答案 1 :(得分:0)
你甚至开始了吗?
newThread.Start();
在您提供的示例中,您只需声明它。
另外请记住,如果您使用WinForms,您将无法直接从创建它的任何线程更新UI;例如,从foreach
循环中修改进度条或标签控件。
答案 2 :(得分:0)
你需要开始,t.Start();
创建实例只是为线程创建托管包装器。调用Start
将启动运行并最终使代码在单独的线程上运行。
答案 3 :(得分:0)
可能你没有启动线程,所以它还没有运行。
但是,在您的情况下,使用BackgroundWorker类通常会更好,这将为您创建线程,并提供线程安全的方式来更新UI,并使线程的进度工作。