Form timer无法停止线程

JecyYu 2015-12-01 09:43:07
我想通过timer实现定时启动任务的工作,大致代码如下,但是在执行后发现文本输出不会间隔两秒输出,停止该线程也不行
private void timer2_Tick(object sender, EventArgs e)
{
string str_start = this.timePick_start.Text;
if (DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Equals(str_start))
{
thre = new Thread(getclik);
thre.IsBackground = true;
thre.Start();
}
}

void getclik()
{
while(true)
{
Console.WriteLine("aaaaa");
Thread.Sleep(2000);
}
}
...全文
142 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2015-12-01
  • 打赏
  • 举报
回复
引用 3 楼 JecyYu 的回复:
[quote=引用 1 楼 hanjun0612 的回复:] 这是因为你的Tick事件里,每次都是新建了一个 thread, 然而你的thread写完,才休息2秒。可是下一个又是新的thread,所以你的当前thread在输出,只是输出完了后休息2秒。可是你每次看见的并不是休息的那个thread,而是新的在输出的thread。 tick里,可以不需要线程。你直接输出+sleep就可以了。
但是不使用线程,winform就卡住了[/quote] 你可以设置你的timer interval=2000,这样就成为2秒一次了。
JecyYu 2015-12-01
  • 打赏
  • 举报
回复
引用 1 楼 hanjun0612 的回复:
这是因为你的Tick事件里,每次都是新建了一个 thread, 然而你的thread写完,才休息2秒。可是下一个又是新的thread,所以你的当前thread在输出,只是输出完了后休息2秒。可是你每次看见的并不是休息的那个thread,而是新的在输出的thread。 tick里,可以不需要线程。你直接输出+sleep就可以了。
但是不使用线程,winform就卡住了
adrianEvin 2015-12-01
  • 打赏
  • 举报
回复
你要把所有的 Thread释放,可以用个list存储,然后循环list一个一个释放。 其实应该在Thread内容执行完成自己释放的
正怒月神 2015-12-01
  • 打赏
  • 举报
回复
这是因为你的Tick事件里,每次都是新建了一个 thread, 然而你的thread写完,才休息2秒。可是下一个又是新的thread,所以你的当前thread在输出,只是输出完了后休息2秒。可是你每次看见的并不是休息的那个thread,而是新的在输出的thread。 tick里,可以不需要线程。你直接输出+sleep就可以了。
  • 打赏
  • 举报
回复
if (DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Equals(str_start)) 你确定会走到这个if语句里面吗?把时间转化成string来比较不是一个好的方法,最好应该把string转化成时间,然后比较时间,可以用>=
#### 收益: 学习《optee系统开发精讲 》套餐的收益如下:1、全体系的掌握optee的核心知识点(多核多线程、启动流程、各类API、TA/PTA/STA、driver、service、各类设计思想、内存管理、中断管理...);2、掌握TEE OS的设计核心思想(不限与optee,对其它TEE也是如此),能够进入软件架构层次的各项设计;3、快速熟悉大系统软件的各项组件,能够进行大系统软件之间的设计或排查问题4、学习和理解理解Armv8/Armv9架构、Trustzone架构5、技术水平提升N个level, 掌握快速的学习方法;#### 课程简介和大纲 该课程包含但不限与以下章节:optee的组件介绍optee os启动流程optee os的初始化流程optee os线程向量表及其作用进入optee os的八种方式optee os的异常向量表和设计模型optee os对irq中断的处理optee os对fiq中断的处理optee os的内存管理optee os的MMU的使用optee os的根密钥(信任根)optee os的RPC机制optee os的存储系统optee os的SFS系统optee os的RPMB机制的实现optee os的Timer实现optee os中实现的GP APIoptee os中的系统调度optee os中密码学函数的支持optee os中的线程调度CA/TA的开发模型optee os中的serviceoptee os中的 PTAoptee os中的 secure driveroptee os中的 Early TAoptee中spinlock的实现原理详解optee中mutex的实现方式optee的栈指针和栈内存的介绍optee中使用虚函数(平台客制化)的设计模型共享内存的介绍optee os的标准错误码TA的签名和验签TA链接静态库的方法

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧