社区
C#
帖子详情
线程的终止问题。痛苦ing。
mobydick
2003-12-17 09:04:25
最近写了一个使用Socket进行通信的小东东。开了一个线程用于监听,但是在程序终止时这个线程不会被终止,只能用任务管理器中的<终止线程>按钮。我想实现的功能如下:
一个Form,上有两个Button,其中一个Button,开始线程
while(true)
{
Thread thread = new Thread(new ThreadStart(accp));
}
另一个Button结束线程,那这个方法应该怎么写呀?
...全文
81
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();
【狂神说】多
线程
笔记
目录1.
线程
简介2.
线程
创建2.1 Thread 1.
线程
简介 任务、进程、
线程
、多
线程
多任务 现实中太多这样同时做多件事情的例子了,看起来是多个任务都在做,其实本质上我们的大脑在同一时间依旧只做了一件事情。 【多
线程
】 原来是一条路,慢慢因为车太多了,道路堵塞,效率极低。为了提高使用的效率,能够充分利用道路,于是加了多个车道。从此,妈妈再也不用担心道路堵塞了。 【普通方法调用和多
线程
】 【程序-进程-
线程
】 一个进程可以有多个
线程
,如视频中同时听声音,看图像,看弹幕,等等 【Process
[译文]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的角度来看这个
问题
。如果我们的目标是“移除垃圾”,那么我们需要一个计划,使之更有效。显然,我们需要判断什么是垃圾,什么不是(对于有敛癖(...
分布式高并发
问题
分布式 一、大型网站系统的特点 高并发,大流量 高可用 海量数据 用户分布广泛,网络情况复杂 安全环境恶劣 需求快速变更,发布频繁 渐进式发展 二、大型网站架构演化发展历程 初始阶段的网站架构 应用服务和数据服务分离 使用缓存改善网站性能 使用应用服务器集群改善网站的并发处理能力 数据库读写分离 使用反向代理和 CDN 加速网站响应 使用分布式文件系统和分布式数据库系统 使用 NoSQL 和搜索引擎 业务拆分 分布式微服务 三、
C#10 编程指南(五)
许多基于 I/O 的 API 返回无
线程
任务。如果你希望,你也可以这样做。类提供了一种创建Task
的方式,它不具有在
线程
池上运行的相关方法,而是在你告诉它完成时完成。没有非泛型的,但也不需要。Task
派生自Task,因此你可以随意选择任何类型参数。按照惯例,大多数开发人员在不需要提供返回值时使用。假设你正在使用一个不提供基于任务的 API 的类,并且希望添加一个基于任务的包装器。我在示例 16-12 中使用的SmtpClient类支持旧的基于事件的异步模式,但不支持基于任务的模式。
程序员面试中遇到
问题
面试时候经常会问的一些
问题
(不断补充中) 面试必备基础题目(虽然不一定常用, 仅用于面试, 面试就是把人搞的都不会然后砍价, 当然您可以讲我可以查资料完成, 但是面试的时候就是没道理的, 起码我是经常看到这些题). 如何把一段逗号分割的字符串转换成一个数组? request.getAttribute() 和 request.getParameter() 有何区别? response.sen
C#
111,096
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章