此处现有的相关问题谈论以下两者之间的差异:

  • Delegate.BeginInvoke和Control.BeginInvoke
  • Control.BeginInvoke和Thread.Start

  • 但是Delegate.BeginInvoke和Thread.Start有什么区别?

    最佳答案

    Thread.Start启动一个新的OS线程以执行委托(delegate)。当委托(delegate)返回时,线程被销毁。这是一项非常繁重的操作(启动和销毁线程),因此通常仅在该方法要长时间运行时才执行此操作。
    Delegate.BeginInvoke将在线程池线程上调用委托(delegate)。方法返回后,线程将返回到池中,以供其他任务重用。这样做的好处是,将方法排队到线程池中比较轻巧,因为您不必每次都启动一个新线程。
    Control.BeginInvoke在控件的线程上调用该方法。 UI组件本质上是单线程的,并且与UI控件的每次交互都必须在创建它的线程上进行。 Control.BeginInvoke是一种方便的方法。

    关于.net - Delegate.BeginInvoke和Thread.Start之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2772597/

    10-13 06:26