new Thread( new ThreadStart( delegate { DoSomething(); } ) ).Start();
?
我似乎记得,在这种情况下,Thread对象将被垃圾回收,但底层的 *** 作系统线程将继续运行,直到委托结束传递给它.我基本上正在寻找ThreadPool功能,但不希望线程是背景线程(即我希望他们保持应用程序活着).
更新:根据Jason,CLR在运行时实际上保留了Thread对象的内部引用,所以在线程退出之前不会被垃圾回收.
解决方法 我一般发现,如果我需要直接在你的例子中开始一个新的线程,而不是从线程池中抓取一个线程,那么它是一个长时间运行的线程,我将需要一个引用来杀死它,监视它等等.对于短时间线程,如在后台线程等上调用IO,我总是使用线程池线程(通常间接通过someDelete.BeginBlah(…)方法调用).当使用像这样的线程池线程时,我宁可不保留引用.我不知道另一个程序员是否可能不适当地使用该线程的引用.如果我不需要参考,我不会保留它来混乱代码.编辑:要回答关于正在垃圾回收的线程的编辑,线程运行时不会发生. CLR保持对每个正在运行的线程的引用.表示线程的对象将不被收集.
总结以上是内存溢出为你收集整理的应该在C#中始终保持对正在运行的Thread对象的引用?全部内容,希望文章能够帮你解决应该在C#中始终保持对正在运行的Thread对象的引用?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)