.net Delegate.BeginInvoke和Thread.Start之间的差异
此处存在的相关问题讨论了以下方面的差异:.net Delegate.BeginInvoke和Thread.Start之间的差异,.net,multithreading,.net,Multithreading,此处存在的相关问题讨论了以下方面的差异: Delegate.BeginInvoke和Control.BeginInvoke Control.BeginInvoke和Thread.Start 但是Delegate.BeginInvoke和Thread.Start之间有什么区别呢?Thread.Start启动一个新的操作系统线程来执行委托。当委托返回时,线程被销毁。这是一个相当繁重的操作(启动和销毁线程),因此通常只有在该方法将长期运行时才执行 Delegate.BeginInvoke将调用线程
- Delegate.BeginInvoke和Control.BeginInvoke
- Control.BeginInvoke和Thread.Start
但是Delegate.BeginInvoke和Thread.Start之间有什么区别呢?
Thread.Start
启动一个新的操作系统线程来执行委托。当委托返回时,线程被销毁。这是一个相当繁重的操作(启动和销毁线程),因此通常只有在该方法将长期运行时才执行
Delegate.BeginInvoke
将调用线程池线程上的委托。方法返回后,线程将返回到池中,供另一个任务重用。这样做的好处是,将方法排入线程池的队列相对较轻,因为您不必每次都启动一个全新的线程
Control.BeginInvoke
调用该控件线程上的方法。UI组件本质上是单线程的,与UI控件的每次交互都必须在创建它的线程上完成<代码>控制。BeginInvoke是一种方便的方法。- Delegate.BeginInvoke使用来执行方法()
- 创建一个完整的新线程