线程问题.. 有人帮忙一下吗 线程thread 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的aaa()里每个循环等到100毫秒循环1000次要100秒而你的Timer每3秒执行一次aaa,不冲突才怪 timer里边不会等aaa()结束之后才开始计时吗? 这样写的话是不会等aaa()结束的??? 我是做web的 很少搞线程但看了你的问题猜测如下为什么要在Tick里面创建多一个线程出来呢在tick里面调用aaa就可以了~或者tick+=aaa;自己每行代码写写注释~ 你就会发现你的思路了~如何对类或方法不熟悉查查资料 再把资料也写到注释中去 timer里边不会等aaa()结束之后才开始计时吗? 这样写的话是不会等aaa()结束的???你timer里的tick是新建一个线程,多线程就是不会等待的,怎么可能会等aaa结束。 timer里边不会等aaa()结束之后才开始计时吗? 这样写的话是不会等aaa()结束的???你timer里的tick是新建一个线程,多线程就是不会等待的,怎么可能会等aaa结束。里面不使用线程UI会卡死啊.. 我不想它卡死.....所以.. 不是就一个线程吗?怎么会是多线程呢? 给小弟解释一下.除了tr,还有哪个是? timercursor.Interval = 3000;//shi fenzhong timercursor.Enabled = true; timercursor.Tick += (sender1, e1) => { tr = new Thread(aaa); tr.Start(); };你这样写就是每3秒开一个线程然后 每个线程都从1-1000; 当你第一个线程执行到一定时间时第二个线程开起来了。他又从1开时 第三个线程开起来又从1开孡,就会出来你看到的乱了 。 timer里边不会等aaa()结束之后才开始计时吗? 这样写的话是不会等aaa()结束的???你timer里的tick是新建一个线程,多线程就是不会等待的,怎么可能会等aaa结束。里面不使用线程UI会卡死啊.. 我不想它卡死.....所以.. 不是就一个线程吗?怎么会是多线程呢? 给小弟解释一下.除了tr,还有哪个是?不用Timer,直接用Thread,Thread里用while(true),里面放aaa代码,循环一次sleep(3000) 通常在你的 Tick 的处理方法中,第一句话就要写上: timercursor.Stop() 方法有效 改过之后的代码为timercursor.Tick += (sender1, e1) => { timercursor.Stop(); tr = new Thread(aaa); tr.Start(); timercursor.Start(); }; 为什么timercursor.Start();要放到里边来才可以.. 方法有效 改过之后的代码为timercursor.Tick += (sender1, e1) => { timercursor.Stop(); tr = new Thread(aaa); tr.Start(); timercursor.Start(); }; 为什么timercursor.Start();要放到里边来才可以..不对 还是不行 放到里边来还是跟原来一样的问题. 主要是我在aaa()方法里已经join()了啊 ,不是会等待执行完之后才会继续执行吗. 在tr.start()后面加tr.Join();不行吗? join不是会等待执行完毕之后才会执行下一步吗 timercursor.Tick += (sender1, e1) => { timercursor.Stop(); tr = new Thread(aaa); tr.Start(); }; public void aaa() { //...... tr = null; timercursor.Start(); } timer里边不会等aaa()结束之后才开始计时吗? 这样写的话是不会等aaa()结束的???你timer里的tick是新建一个线程,多线程就是不会等待的,怎么可能会等aaa结束。用sleep是可以实现的.,已经做过了,当初想到要有个计时器 所以还是用timer了 还是多谢哥们! 朋友- - 你这样写是找不到timercursor变量的 难道你要把它弄成全局变量吗 timercursor.Interval = 3000; 你确定是 10 分钟? 问题很简单,你的 aaa 方法里面的 for 循环,每循环一次需要停顿 100 ms,循环 1000 次,需要停顿 100 s,你的 timer.Interval 是 3000 ms,即 3 s,你的 第一次触发 aaa 的东西还没做完,第二次、第三次、......、第 N 次 触发就已经来了,怎么会不乱呢?换句话说,当你第一次触发 aaa 的时候,有可能在执行到 label.Text = 10% 的时候,第二次 timer 触发了,然后 label.Text 就被冲掉了。 public void aaa() {timercursor.Stop(); for (int i = 0; i < 1000; i++) { this.Invoke(new Action<int>((total) => { this.label1.Text = (i + 1).ToString() + "/" + total; //this.progressBar1.Maximum = total; //this.progressBar1.Value = Convert.ToInt32(i+1); }), 1000); Thread.Sleep(100); } this.Invoke(new Action(() => { textBox1.Text += "结束" + "\r\n"; })); tr = null;timercursor.Start(); } 不明白 为什么一定要加一个 timer,直接开个新线程不久行了 timer定时器的执行函数就是一个独立线程,要么用timer,要么用线程(里面sleep定时),都不影响UI的,您现在的做法是定时创建线程,很多线程同时工作,同时控制控件text 每3秒都new出了一个线程,最后很多线程在工作 如果只想开启一次的话,在aaa里面循环开始前timercursor.stop();啊 清空TextEdit的问题 这个关于字典,怎么会相等呢 如何比较两个颠倒顺序的字符串 迷茫ING,恳求指点:怎么样能快速学习C#,网站方面的???谢谢了。。。 C#程序开机自动运行 treeview 问题。 从A 移动到 B 单个没有问题 批量出现比较奇怪的事情。 菜鸟多线程问题 tabcontrol动态添加问题 请问如何让组件可以在Form上拖曳呢? MSDN还有某些书中讲到SQL语句及存储过程,这个存储过程指的是什么? 内存释放的问题 GZipStream对数据格式有限制吗?
循环1000次要100秒
而你的Timer每3秒执行一次aaa,不冲突才怪
但看了你的问题猜测如下
为什么要在Tick里面创建多一个线程出来呢
在tick里面调用aaa就可以了~
或者tick+=aaa;自己每行代码写写注释~ 你就会发现你的思路了~
如何对类或方法不熟悉查查资料 再把资料也写到注释中去
你timer里的tick是新建一个线程,多线程就是不会等待的,怎么可能会等aaa结束。
你timer里的tick是新建一个线程,多线程就是不会等待的,怎么可能会等aaa结束。
里面不使用线程UI会卡死啊.. 我不想它卡死.....所以.. 不是就一个线程吗?怎么会是多线程呢? 给小弟解释一下.除了tr,还有哪个是?
timercursor.Enabled = true;
timercursor.Tick += (sender1, e1) =>
{
tr = new Thread(aaa);
tr.Start();
};你这样写就是每3秒开一个线程然后 每个线程都从1-1000; 当你第一个线程执行到一定时间时第二个线程开起来了。
他又从1开时 第三个线程开起来又从1开孡,就会出来你看到的乱了 。
你timer里的tick是新建一个线程,多线程就是不会等待的,怎么可能会等aaa结束。
里面不使用线程UI会卡死啊.. 我不想它卡死.....所以.. 不是就一个线程吗?怎么会是多线程呢? 给小弟解释一下.除了tr,还有哪个是?
不用Timer,直接用Thread,Thread里用while(true),里面放aaa代码,循环一次sleep(3000)
timercursor.Tick += (sender1, e1) =>
{
timercursor.Stop();
tr = new Thread(aaa);
tr.Start();
timercursor.Start();
}; 为什么timercursor.Start();要放到里边来才可以..
timercursor.Tick += (sender1, e1) =>
{
timercursor.Stop();
tr = new Thread(aaa);
tr.Start();
timercursor.Start();
}; 为什么timercursor.Start();要放到里边来才可以..不对 还是不行 放到里边来还是跟原来一样的问题. 主要是我在aaa()方法里已经join()了啊 ,不是会等待执行完之后才会继续执行吗.
timercursor.Tick += (sender1, e1) =>
{
timercursor.Stop();
tr = new Thread(aaa);
tr.Start();
}; public void aaa()
{
//......
tr = null;
timercursor.Start();
}
你timer里的tick是新建一个线程,多线程就是不会等待的,怎么可能会等aaa结束。
用sleep是可以实现的.,已经做过了,当初想到要有个计时器 所以还是用timer了 还是多谢哥们!
{
timercursor.Stop();
for (int i = 0; i < 1000; i++)
{
this.Invoke(new Action<int>((total) =>
{
this.label1.Text = (i + 1).ToString() + "/" + total;
//this.progressBar1.Maximum = total;
//this.progressBar1.Value = Convert.ToInt32(i+1);
}), 1000);
Thread.Sleep(100);
}
this.Invoke(new Action(() =>
{
textBox1.Text += "结束" + "\r\n";
}));
tr = null;
timercursor.Start();
}
您现在的做法是定时创建线程,很多线程同时工作,同时控制控件text
每3秒都new出了一个线程,最后很多线程在工作