1.不能
2.同上
3.见4
4.Abort()会抛出异常,一般情况下CLR会吞掉这个异常,因此一般情况下能让线程过程自行结束就不要使用Abort()。使用这个方法表示你的多线程设计功力不足。
5.不是,看具体需求。另外面向对象与面向过程这种术语一般只在讨论语言差异时出现,而不会说一个概念(比如线程)是不是面向对象/面向过程的。
2.同上
3.见4
4.Abort()会抛出异常,一般情况下CLR会吞掉这个异常,因此一般情况下能让线程过程自行结束就不要使用Abort()。使用这个方法表示你的多线程设计功力不足。
5.不是,看具体需求。另外面向对象与面向过程这种术语一般只在讨论语言差异时出现,而不会说一个概念(比如线程)是不是面向对象/面向过程的。
解决方案 »
- C#利用JMAIL收取邮件,获取的subject是乱码,跪求大侠指点!!!
- 动态生成的textbox赋值
- 对于select 语句中是两个表连接生成的 datatable ,更新时,如何手写 update语句呢?(即不用sqlcommandbuilder生成)
- excel提取单元格数据的问题
- 高分请教一个C#自定义打印问题(有建设性意见者有分)
- safe模式下的C#调试,如何察看内存状况??
- 一个sql的问题?
- 请问如何实现带进度条备份和还原sql server数据库
- 如何在服务里做全局钩子
- .NET专家请进!!!
- 关于enum的一个问题
- 上位机串口监听X0是否有输入的报文怎么写modus Rtu通讯协议
我要实现一个功能就是 外部按键触发 然后线程里执行。
你看我这样处理对不对,
step1:程序启动,开启线程,
step2:线程里循环查询 开关量,为真则执行,否则 继续循环查询
5.线程可以在程序(一般叫主线程)的任何地方启动,通过new Thread或者继承重写Thread类实现。
会报错,线程正在运行或已经终止,不能重新启动
想重新运行,需要重新new
我要实现一个功能就是 外部按键触发 然后线程里执行。
你看我这样处理对不对,
step1:程序启动,开启线程,
step2:线程里循环查询 开关量,为真则执行,否则 继续循环查询
不好。应该在“开关量”被修改时再创建并启动线程。如果可能的话,“开关量”也不需要。
把子线程查询改为 由主线程监听外部按键事件,然后开启线程执行处理。
把子线程查询改为 由主线程监听外部按键事件,然后开启线程执行处理这个怎么做?我不懂 能不能说具体点?
private void btn_DCYF_Click(object sender, EventArgs e) //监听事件
{
for (int i = 0; i < 1; i++)
{
Thread t = new Thread(AutoDCYF);
t.SetApartmentState(ApartmentState.STA); //在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
t.Start(i);
lock (this)
{
rtb_log.Text = rtb_log.Text + "\n启动【"+i+"】子线程。";
}
//GC.Collect();
} }
你这个方法不错,不过我很好奇,就是当之前那个线程还没有结束时,我又创建一个同名线程并进入,会有什么后结呢?
线程的名称就类似于handle,是一个引用类型,只是用来操作线程的,跟线程本身没什么关系
不要说你点了一次,执行完click,动态创建的线程名称就已经被回收掉了
即使你在button里用同一个变量new了很多次,也只是每一次指向不同的线程对象而已