2010-03-26 33 views
0

假设我在Silverlight中有一个情况,其中有一个后台线程(保证不是UI线程)做一些工作,它需要创建一个新线程。事情是这样的:Silverlight 4RC线程 - 可以一个新的线程返回UI线程

//running in a background thread 
Thread t = new Thread(new ThreadStart(delegate{}); 
t.Start(); 

也让我们说,在这个特定时刻的UI线程只是挂无所事事。

请记住,我对Silverlight线程模型并不熟悉,有没有new Thread()调用给我的UI线程的危险?

我试图实现的动机并不重要 - 我不想修改现有的代码。我只想知道是否有可能使UI线程意外返回。

干杯

+0

对那些澄清Silverlight线程模型的人加分:) – 2010-03-26 05:04:43

回答

2

不,这是不可能的。无论其他线程在做什么,new Thread()都将是一个新的线程。

+0

目前听起来不错,这就是我所希望的,我问的原因是我的团队中有人认为线程被重用 – 2010-03-26 05:01:29

1

好吧, 所以我想这个问题可能归结为Silverlight UI线程是否可能在线程池中,当我调用“new Thread()”时线程被分配。

我已经完成了一点搜索,但无法找到Silverlight线程实际工作方式的明确答案。 (有相当多的意见存在,但他们似乎并不总是同意)。
然而,它会出现silverlight使用线程池,所以调用“新的线程()”可能并不总是创建一个新线程(您可以从池中分配一个现有的线程),具体取决于池如何管理/老化等

从我看到的一些博客中,线程甚至可能依赖于silverlight应用托管的浏览器?

0

不,即使Silverlight UI线程处于空闲状态,也会在该线程上运行等待UI事件的消息循环。所以UI线程总是在运行,永远不会被线程池返回。