c# 里怎么结束线程? 这东西能结束吗?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 System.Threading.Thread thread = new System.Threading.Thread("你调用的方法"); thread.Abort();//结束掉线程 同问 System.Threading.Thread thread = new System.Threading.Thread("你调用的方法");比如我调用的方法中在下载东西 网路通信之类的。 这时候thread.Abort();结果下载的方法还在工作。 就C#而言的话还得看情况 当子线程的IsBackground属性设为false,则主线程结束并不影响其他线程的执行,只有所有子线程都结束,程序结束 当子线程的IsBackground属性设为true,则主线程的结束,会导致子线程的强迫结束 Thread.Abort()只在托管世界有效。如果调用Thread.Abort()的时候你的线程正在执行非托管代码,要等到它从非托管代码返回托管代码之后才会生效。所以你想通过Thread.Abort()来结束一条长时间运行非托管代码的线程是办不到的。 应该是用加载到单独的应用程序域需要的时候卸载整个应用程序域具体的没做过最好是重新设计,选取自带中断机制或者可以插入用户代码控制处理进程的api 你说的子线程应该是 aysnc异步操作,他是向进程池里投递要执行的信息的,线程由线程池控制,并不附属于调用他的线程;一般有异步操作的 类 都有停止的函数请查找msdn 你没理解对。。你用线程调用API、外部库、程序之类的,调完就和你的线程没关系了就像是你戴着手套去泼水,扔球泼出去的水,扔出去的球你还想他们在空中继续照你的意思做动作吗。。你摘了手套,他们也不会回到你手上来。。所以摘手套这招不行。。 thread.Abort方法不是很可靠,它会引发一个异常,抓这个异常可以释放资源,但这样其实也不是完全可靠,最好的方法是线程内部不断检测一个退出标志,如果发现设置了退出标志,则用return结束线程, 1.线程方法运行完后自己就会结束了2.线程出来异常但是又没有在线程方法内捕获那线程结束,并导致应用程序关闭3.Thread.Abort是强制关闭线程,是在线程内引发一个特定的异常4.线程的IsBackground=true时,主线程退出后它也跟着结束了,IsBackground=false,主线程退出它不会结束 C#.net 发布程序如何添加水晶报表的DLL文件 Memcached总是提示被实例化两次的错误 如何把代码打包生成dll文件 如何让客户端在不安装OFFICE情况下操作 WORD 和 EXCEL 文档??? ContexMenu的排列问题 用C# 编写的tlb 用VB6调用 的问题 如何采集延时加载的网页数据 关于webbrowser滚动条问题 怎么做像1616.com或者雅虎的那种天气预报 难道C#就这么烂,连最基本的控制都做不到 C# Control的Invoke和BeginInvoke及其实现机制 怎么搭建windows phone7的开发环境
thread.Abort();//结束掉线程
比如我调用的方法中在下载东西 网路通信之类的。 这时候thread.Abort();结果下载的方法还在工作。
还得看情况
当子线程的IsBackground属性设为false,则主线程结束并不影响其他线程的执行,只有所有子线程都结束,程序结束
当子线程的IsBackground属性设为true,则主线程的结束,会导致子线程的强迫结束
如果调用Thread.Abort()的时候你的线程正在执行非托管代码,
要等到它从非托管代码返回托管代码之后才会生效。
所以你想通过Thread.Abort()来结束一条长时间运行非托管代码的线程是办不到的。
需要的时候卸载整个应用程序域
具体的没做过最好是重新设计,选取自带中断机制或者可以插入用户代码控制处理进程的api
你用线程调用API、外部库、程序之类的,调完就和你的线程没关系了
就像是你戴着手套去泼水,扔球
泼出去的水,扔出去的球你还想他们在空中继续照你的意思做动作吗。。
你摘了手套,他们也不会回到你手上来。。
所以摘手套这招不行。。
2.线程出来异常但是又没有在线程方法内捕获那线程结束,并导致应用程序关闭
3.Thread.Abort是强制关闭线程,是在线程内引发一个特定的异常
4.线程的IsBackground=true时,主线程退出后它也跟着结束了,IsBackground=false,主线程退出它不会结束