个人理解:
委托.BeginInvoke 也是开启一个新线程。且Thread能做的 委托也都能做吧。
那还要线程有什么用吗?
请大家指教!
9 个解决方案
#1
BeginInvoke 不是用来起线程的。
#2
具体的细节看这篇blog
http://www.cnblogs.com/healerkx/articles/1521450.html
http://www.cnblogs.com/healerkx/articles/1521450.html
#3
BeginInvoke 也可以不阻塞主线程。难道他没有启用新线程?
我记得msdn上说 是使用线程池
我记得msdn上说 是使用线程池
#4
华丽的飘过
#5
Delegate.BeginInvoke
通过一个委托来进行同步方法的异步调用,Delegate.BeginInvoke方法是从ThreadPool取出一个线程来执行这个方法,以获得异步执行效果的。
通过一个委托来进行同步方法的异步调用,Delegate.BeginInvoke方法是从ThreadPool取出一个线程来执行这个方法,以获得异步执行效果的。
#6
请问 , 新开一个线程和从线程池里取出一个线程各有什么优缺点吗?
#7
个人观点 新开线程用于比较长的程序,
线程池 用于小片段代码
#8
up
#9
每个进程都有一个线程池。线程池的默认大小为:每个可用处理器 25 个辅助线程,再加上 1000 个 I/O 完成线程。使用 SetMaxThreads 方法可以更改线程池中的线程数。每个线程使用默认的堆栈大小并按照默认的优先级运行。
创建少量的线程可以用Thread来操作,并人工管理线程,但是如果要创建大量的后台线程,应该使用线程池,它帮我们优化了线程。虽然我们可以自己创建一个线程池,管理自己的线程池,不过最好还是使用进程自己的默认线程池,BeginInvoke就是使用默认线程池的方法。
创建少量的线程可以用Thread来操作,并人工管理线程,但是如果要创建大量的后台线程,应该使用线程池,它帮我们优化了线程。虽然我们可以自己创建一个线程池,管理自己的线程池,不过最好还是使用进程自己的默认线程池,BeginInvoke就是使用默认线程池的方法。
#1
BeginInvoke 不是用来起线程的。
#2
具体的细节看这篇blog
http://www.cnblogs.com/healerkx/articles/1521450.html
http://www.cnblogs.com/healerkx/articles/1521450.html
#3
BeginInvoke 也可以不阻塞主线程。难道他没有启用新线程?
我记得msdn上说 是使用线程池
我记得msdn上说 是使用线程池
#4
华丽的飘过
#5
Delegate.BeginInvoke
通过一个委托来进行同步方法的异步调用,Delegate.BeginInvoke方法是从ThreadPool取出一个线程来执行这个方法,以获得异步执行效果的。
通过一个委托来进行同步方法的异步调用,Delegate.BeginInvoke方法是从ThreadPool取出一个线程来执行这个方法,以获得异步执行效果的。
#6
请问 , 新开一个线程和从线程池里取出一个线程各有什么优缺点吗?
#7
个人观点 新开线程用于比较长的程序,
线程池 用于小片段代码
#8
up
#9
每个进程都有一个线程池。线程池的默认大小为:每个可用处理器 25 个辅助线程,再加上 1000 个 I/O 完成线程。使用 SetMaxThreads 方法可以更改线程池中的线程数。每个线程使用默认的堆栈大小并按照默认的优先级运行。
创建少量的线程可以用Thread来操作,并人工管理线程,但是如果要创建大量的后台线程,应该使用线程池,它帮我们优化了线程。虽然我们可以自己创建一个线程池,管理自己的线程池,不过最好还是使用进程自己的默认线程池,BeginInvoke就是使用默认线程池的方法。
创建少量的线程可以用Thread来操作,并人工管理线程,但是如果要创建大量的后台线程,应该使用线程池,它帮我们优化了线程。虽然我们可以自己创建一个线程池,管理自己的线程池,不过最好还是使用进程自己的默认线程池,BeginInvoke就是使用默认线程池的方法。