Silverlight 4RC线程 - 新线程可以返回UI线程

时间:2010-03-26 04:53:28

标签: .net silverlight .net-4.0 multithreading silverlight-4.0

假设我在Silverlight中有一个情况,那里有一个后台线程(保证不是UI线程)做一些工作,它需要创建一个新线程。像这样:

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

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

请记住,我对Silverlight线程模型并不了解,new Thread()调用是否有给我UI线程的危险?

我想要实现的动机或内容并不重要 - 我不想修改现有代码。我只是想知道是否有可能意外地恢复UI线程。

干杯

3 个答案:

答案 0 :(得分:2)

不,这是不可能的。无论其他任何线程在做什么,new Thread()都将成为 new 线程。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

不,即使Silverlight UI线程处于空闲状态,也会在该线程上运行消息循环,等待UI事件。因此,UI线程始终在运行,并且永远不会被线程池返回。