gpt4 book ai didi

.net - Delegate.BeginInvoke 和 Thread.Start 之间的区别

转载 作者:行者123 更新时间:2023-12-02 17:34:14 24 4
gpt4 key购买 nike

这里现有的相关问题讨论以下之间的差异:

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

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

最佳答案

Thread.Start 启动一个新的操作系统线程来执行委托(delegate)。当委托(delegate)返回时,线程被销毁。这是一个相当重量级的操作(启动和销毁线程),因此您通常仅在该方法要长时间运行时才执行此操作。

Delegate.BeginInvoke 将在线程池线程上调用委托(delegate)。一旦该方法返回,线程将返回到池中以供另一个任务重用。这样做的优点是,将方法排队到线程池相对轻量级,因为您不必每次都启动一个全新的线程。

Control.BeginInvoke 在线程上调用控件的方法。 UI 组件本质上是单线程的,与 UI 控件的每次交互都必须在创建它的线程上完成。 Control.BeginInvoke 是一种方便的方法。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com