当前位置:编程学习 > C#/ASP.NET >>

Timer和线程的问题

代码如下,Timer的时间间隔是4秒,在Timer内开启的是同一个线程还是多个线程?谢谢


private void Timer1_Tick(object sender, EventArgs e)
{
   SyncCount++;
   if (SyncCount == 1)
   {
       SyncCount = 0;
       System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(DataSyncProc));
       th.IsBackground = true;
       th.Start();
    }
}
--------------------编程问答-------------------- 哪个Timer? --------------------编程问答-------------------- 多个。。。 --------------------编程问答-------------------- 你在你的方法里输出信息
不就知道他是几个线程了吗 --------------------编程问答-------------------- NEW了多个 --------------------编程问答-------------------- 没4秒页面刷新一次,之前的线程没有关闭,是多个线程。 --------------------编程问答-------------------- DataSyncProc的处理要是没有在4秒呢完成就会是多个 --------------------编程问答-------------------- SyncCount 初始值要是0 的话,Timer1_Tick 执行一次开启一个线程! --------------------编程问答-------------------- 肯定只有一个线程啊 既然判断条件是SyncCount ==1 --------------------编程问答-------------------- 多线程

即使不是timer也是多个线程啊?你每次都是new的一个新线程
--------------------编程问答-------------------- 没看到SyncCount的定义的Tick外面的对SyncCount使用情况,所以不确定有几个线程
可能是0个、1个、多个 --------------------编程问答-------------------- 这里肯定是多个线程的了,L8只是看到SyncCount ==1,没看到if里面SyncCount = 0;这句,所以每次触发事件时都将重新建立一个新的线程 --------------------编程问答-------------------- 多个线程 --------------------编程问答--------------------
引用 8 楼  的回复:
肯定只有一个线程啊 既然判断条件是SyncCount ==1

那条件根本没用 --------------------编程问答--------------------
引用 11 楼  的回复:
这里肯定是多个线程的了,L8只是看到SyncCount ==1,没看到if里面SyncCount = 0;这句,所以每次触发事件时都将重新建立一个新的线程


如果SyncCount在进入Tick处理前是非0值那么就不会产生线程。
如果SyncCount在进入Tick处理前是0那么也不代表下一次进入Tick是还是0。
所以条件不全,哪种情况都可能发生。 --------------------编程问答-------------------- 多个线程,new一次就是一个对象
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,