代码之家  ›  专栏  ›  技术社区  ›  Darko

Silverlight 4RC线程-新线程能否返回UI线程

  •  0
  • Darko  · 技术社区  · 14 年前

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

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

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

    记住,我不太了解Silverlight线程模型,是否存在 new Thread() 打电话给我用户界面线程?

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

    干杯

    3 回复  |  直到 13 年前
        1
  •  2
  •   Dean Harding    14 年前

    不,不可能。 new Thread() 将会是一个 新的 线程,不管其他线程在做什么。

        2
  •  1
  •   Drew    14 年前

    好啊, 因此,我想问题可能归结为,当我调用“new thread()”时,SilverlightUI线程是否有可能在线程池中分配线程。

    我做了一些搜索,但无法找到有关Silverlight线程实际工作方式的确切答案。(有相当多的意见存在,但它们似乎并不总是一致的)。
    但是,看起来Silverlight正在使用线程池,因此调用__new thread()_可能并不总是创建新线程(您可以从池中分配现有线程),这取决于池的管理/老化方式等。

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

        3
  •  0
  •   Tushar Kesare    13 年前

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