假设我在Silverlight中有一个情况,其中有一个后台线程(保证不是UI线程)正在做一些工作,它需要创建一个新线程。如下所示:
//running in a background thread
Thread t = new Thread(new ThreadStart(delegate{});
t.Start();我们还可以说,UI线程在这个特定的时刻只是闲置着,什么也不做。
请记住,我对Silverlight线程模型并不了解,new Thread()调用会给我UI线程带来危险吗?
动机或我试图实现什么并不重要-我不想修改现有的代码。我只想知道是否有可能意外地取回UI线程。
干杯
发布于 2010-03-26 12:57:51
不,这不可能。无论其他线程在做什么,new Thread()都将是一个新线程。
发布于 2010-03-26 13:25:24
好吧,所以我猜问题可能会归结为当我调用"new Thread()“时,Silverlight UI线程是否可能在线程池中,线程是从线程池中分配的。
我做了相当多的搜索,但在Silverlight线程的实际工作原理上找不到明确的答案。(有相当多的观点,但它们似乎并不总是一致的)。
然而,看起来silverlight正在使用一个线程池,因此调用“new thread ()”可能并不总是创建一个新的线程(您可以从池中分配一个现有的线程),这取决于池的管理/老化等方式。
从我看到的一些博客中,线程甚至可能依赖于托管silverlight应用程序的浏览器?
发布于 2011-07-20 18:26:42
不,即使silverlight UI线程空闲,也会有消息循环在该线程上运行,等待UI事件。所以UI线程总是在运行,并且永远不会被线程池返回。
https://stackoverflow.com/questions/2521210
复制相似问题