社区
C#
帖子详情
线程的终止问题。痛苦ing。
mobydick
2003-12-17 09:04:25
最近写了一个使用Socket进行通信的小东东。开了一个线程用于监听,但是在程序终止时这个线程不会被终止,只能用任务管理器中的<终止线程>按钮。我想实现的功能如下:
一个Form,上有两个Button,其中一个Button,开始线程
while(true)
{
Thread thread = new Thread(new ThreadStart(accp));
}
另一个Button结束线程,那这个方法应该怎么写呀?
...全文
82
6
打赏
收藏
线程的终止问题。痛苦ing。
最近写了一个使用Socket进行通信的小东东。开了一个线程用于监听,但是在程序终止时这个线程不会被终止,只能用任务管理器中的按钮。我想实现的功能如下: 一个Form,上有两个Button,其中一个Button,开始线程 while(true) { Thread thread = new Thread(new ThreadStart(accp)); } 另一个Button结束线程,那这个方法应该怎么写呀?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
l_clove
2003-12-18
打赏
举报
回复
你使用的是阻塞式的Socket?在侦听消息时线程可能不会被终止
设置Blocking为false试试。
gOODiDEA
2003-12-18
打赏
举报
回复
参考:
public class MyThread
{
public static void Work()
{
try
{
for( int i = 0; i < 4; i++ )
{
Console.WriteLine( Thread.CurrentThread.Name + "正在计算" + i.ToString() );
Thread.Sleep( 50 );
}
}
catch( ThreadAbortException e )
{
Console.WriteLine( "错误信息:{0}", e.Message );
Thread.ResetAbort();//取消主线程要求中止的请求,如不执行则ThreadAbortException会在catch块末端再次引发
}
Console.WriteLine( Thread.CurrentThread.Name + "完成工作!" );
}
}
class ThreadAbortTest
{
public static void Main()
{
Console.WriteLine( "主线程启动!");
Thread thread = new Thread( new ThreadStart( MyThread.Work ) );//MyThread.Work代表要执行的线程函数,它可以是静态的,也可以是某个类实例的方法,它是要执行的线程函数的委托
thread.Name = "MyThread";
thread.Start();//线程启动后将被CPU调度,但不一定是马上执行,所以同样的例子在不同的机器上可能会有不同的结果。
Console.WriteLine( "主线程第一次休眠!");
Thread.Sleep( 100 );
Console.WriteLine( "MyThread被挂起!");
thread.Suspend();//挂起子线程
Console.WriteLine( "主线程第二次休眠!");
Thread.Sleep( 100 );
Console.WriteLine( "MyThread被恢复!");
thread.Resume();//恢复子线程
thread.Abort();//终止子线程
thread.Join();//直到到子线程完全终止了,主线程才继续运行
Console.WriteLine( "主线程终止!" );
Console.ReadLine();
}
}
13880079673
2003-12-17
打赏
举报
回复
Abort是强制关闭线程,不大好
13880079673
2003-12-17
打赏
举报
回复
定义一个bool全局变量
在结束按钮里面重设它
在你的线程里面判断
速马
2003-12-17
打赏
举报
回复
// 但是在程序终止时这个线程不会被终止
如果函数可以正常返回,那自己就会中止,无需显式调用Abort()
速马
2003-12-17
打赏
举报
回复
thread.Abort();
【狂神说】多
线程
笔记
线程
简介2.
线程
创建2.1 Thread 1.
线程
简介 任务、进程、
线程
、多
线程
多任务 现实中太多这样同时做多件事情的例子了,看起来是多个任务都在做,其实本质上我们的大脑在同一时间依旧只做了一件事情。 【多
线程
】 ...
[译文]C# Heap(
ing
) Vs Stack(
ing
) in .NET: Part IV
原文地址:http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory_401282006141834PM/csharp_memory_4.aspx 绘图(Graph
ing
) 让我们从GC的角度来看这个
问题
。如果我们的目标是“移除垃圾”,那么我们...
分布式高并发
问题
3 、数据库 sequence 表以及乐观锁 4 、 Redis 生成 ID 5 、 Twitter 的 snowflake 算法 二、设计一个带有过期时间的 LRU 缓存
问题
描述
问题
分析 过期时间实现 维护一个
线程
惰性删除 三、设计一个分布式锁 什么是...
C#10 编程指南(五)
许多基于 I/O 的 API 返回无
线程
任务。如果你希望,你也可以这样做。类提供了一种创建Task的方式,它不具有在
线程
池上运行的相关方法,而是在你告诉它完成时完成。没有非泛型的,但也不需要。Task派生自Task,因此你...
程序员面试中遇到
问题
面试时候经常会问的一些
问题
(不断补充中) 面试必备基础题目(虽然不一定常用, 仅用于面试, 面试就是把人搞的都不会然后砍价, 当然您可以讲我可以查资料完成, 但是面试的时候就是没道理的, 起码我是经常看到这些...
C#
111,098
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章