2010-03-26 82 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線程總是在運行,永遠不會被線程池返回。