17 个解决方案
#1
是否等待还是启动新线程,这取决于你的代码是如何写的
#2
也就是说该线程中须要在首尾处使用block和unblock是么?
#3
请问如果需要等待,该如何处理
#4
可以使用ThreadPool,参照http://www.cnblogs.com/SkySoot/archive/2012/04/01/2429259.html
#5
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
如果ScanAndSortThread本身有时执行超过50毫秒,会不会某一时间有两个ScanAndSortThread在执行?
如果ScanAndSortThread本身有时执行超过50毫秒,会不会某一时间有两个ScanAndSortThread在执行?
#6
感谢
#7
请问如果需要等待,该如何处理
可以使用ThreadPool,参照http://www.cnblogs.com/SkySoot/archive/2012/04/01/2429259.html
如果是如下形式
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
请问如果ScanAndSortThread本身有时执行超过50毫秒,会不会某一时间有两个ScanAndSortThread在执行?
#8
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
如果ScanAndSortThread本身有时执行超过50毫秒,会不会某一时间有两个ScanAndSortThread在执行?
会,如果要用定时器,那么你需要动态计算定时器的触发时间
#9
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
如果ScanAndSortThread本身有时执行超过50毫秒,会不会某一时间有两个ScanAndSortThread在执行?
构造函数最后一个参数为-1时,定时器只会执行1次。
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, -1);
线程函数最后加上
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 50, -1);
这样就能保证不会同时有2个ScanAndSortThread运行了。
#10
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
如果ScanAndSortThread本身有时执行超过50毫秒,会不会某一时间有两个ScanAndSortThread在执行?
构造函数最后一个参数为-1时,定时器只会执行1次。
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, -1);
线程函数最后加上
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 50, -1);
这样就能保证不会同时有2个ScanAndSortThread运行了。
谢谢
#11
我现在有一线程,该线程本身执行时间有时会大于100毫秒,如果我将此线程的执行频率设定为50毫秒,想了解该线程是如何执行的,会不会产生某一大于100毫秒线程中的执行未完成系统还会启动一个新的线程
看不懂。什么叫做“线程执行频率”?线程中你去执行一个方法,假设两个线程同时都在执行同一个方法,那么就是同一个方法的两个执行实例在并发着。这很“正常”,不应该奇怪。
#12
是否等待还是启动新线程,这取决于你的代码是如何写的
请问如果需要等待,该如何处理
这就谈不上“线程等待”,而是你的前一个方法执行开始的时候应该关闭定时器,然后方法执行到最后的时候才启动定时器。
不要滥用线程这个概念,要按照常规的、基础的方式考虑程序设计问题。
#13
是否等待还是启动新线程,这取决于你的代码是如何写的
请问如果需要等待,该如何处理
这就谈不上“线程等待”,而是你的前一个方法执行开始的时候应该关闭定时器,然后方法执行到最后的时候才启动定时器。
不要滥用线程这个概念,要按照常规的、基础的方式考虑程序设计问题。
谢谢
#14
System.Threading.Timer 对象实例,要临时停止定时,使用 change 方法;要启用它,也是使用 change 方法。不是重新创建对象 Timer 类型实例。
#15
System.Threading.Timer 对象实例,要临时停止定时,使用 change 方法;要启用它,也是使用 change 方法。不是重新创建对象 Timer 类型实例。
多谢
实例:MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
void ThreadFunction()
{
线程函数头临时停止:MotionTim.change((new TimeSpan(-1), new TimeSpan(0, 0, 0, 50));
.
线程函数
.
线程函数尾重新启用:MotionTim.change((new TimeSpan(0), new TimeSpan(0, 0, 0, 50));
}
这样可以么?
#16
System.Threading.Timer 对象实例,要临时停止定时,使用 change 方法;要启用它,也是使用 change 方法。不是重新创建对象 Timer 类型实例。
多谢
实例:MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
void ThreadFunction()
{
线程函数头临时停止:MotionTim.change(-1, 50);
.
线程函数
.
线程函数尾重新启用:MotionTim.change(0, 50);
}
这样可以么?
#17
这个叫线程定时器!!!!
你提的问题做个很点单是实验就解决了,何必提问这么麻烦
你提的问题做个很点单是实验就解决了,何必提问这么麻烦
#1
是否等待还是启动新线程,这取决于你的代码是如何写的
#2
是否等待还是启动新线程,这取决于你的代码是如何写的
也就是说该线程中须要在首尾处使用block和unblock是么?
#3
是否等待还是启动新线程,这取决于你的代码是如何写的
请问如果需要等待,该如何处理
#4
请问如果需要等待,该如何处理
可以使用ThreadPool,参照http://www.cnblogs.com/SkySoot/archive/2012/04/01/2429259.html
#5
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
如果ScanAndSortThread本身有时执行超过50毫秒,会不会某一时间有两个ScanAndSortThread在执行?
如果ScanAndSortThread本身有时执行超过50毫秒,会不会某一时间有两个ScanAndSortThread在执行?
#6
请问如果需要等待,该如何处理
可以使用ThreadPool,参照http://www.cnblogs.com/SkySoot/archive/2012/04/01/2429259.html
感谢
#7
请问如果需要等待,该如何处理
可以使用ThreadPool,参照http://www.cnblogs.com/SkySoot/archive/2012/04/01/2429259.html
如果是如下形式
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
请问如果ScanAndSortThread本身有时执行超过50毫秒,会不会某一时间有两个ScanAndSortThread在执行?
#8
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
如果ScanAndSortThread本身有时执行超过50毫秒,会不会某一时间有两个ScanAndSortThread在执行?
会,如果要用定时器,那么你需要动态计算定时器的触发时间
#9
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
如果ScanAndSortThread本身有时执行超过50毫秒,会不会某一时间有两个ScanAndSortThread在执行?
构造函数最后一个参数为-1时,定时器只会执行1次。
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, -1);
线程函数最后加上
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 50, -1);
这样就能保证不会同时有2个ScanAndSortThread运行了。
#10
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
如果ScanAndSortThread本身有时执行超过50毫秒,会不会某一时间有两个ScanAndSortThread在执行?
构造函数最后一个参数为-1时,定时器只会执行1次。
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, -1);
线程函数最后加上
MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 50, -1);
这样就能保证不会同时有2个ScanAndSortThread运行了。
谢谢
#11
我现在有一线程,该线程本身执行时间有时会大于100毫秒,如果我将此线程的执行频率设定为50毫秒,想了解该线程是如何执行的,会不会产生某一大于100毫秒线程中的执行未完成系统还会启动一个新的线程
看不懂。什么叫做“线程执行频率”?线程中你去执行一个方法,假设两个线程同时都在执行同一个方法,那么就是同一个方法的两个执行实例在并发着。这很“正常”,不应该奇怪。
#12
是否等待还是启动新线程,这取决于你的代码是如何写的
请问如果需要等待,该如何处理
这就谈不上“线程等待”,而是你的前一个方法执行开始的时候应该关闭定时器,然后方法执行到最后的时候才启动定时器。
不要滥用线程这个概念,要按照常规的、基础的方式考虑程序设计问题。
#13
是否等待还是启动新线程,这取决于你的代码是如何写的
请问如果需要等待,该如何处理
这就谈不上“线程等待”,而是你的前一个方法执行开始的时候应该关闭定时器,然后方法执行到最后的时候才启动定时器。
不要滥用线程这个概念,要按照常规的、基础的方式考虑程序设计问题。
谢谢
#14
System.Threading.Timer 对象实例,要临时停止定时,使用 change 方法;要启用它,也是使用 change 方法。不是重新创建对象 Timer 类型实例。
#15
System.Threading.Timer 对象实例,要临时停止定时,使用 change 方法;要启用它,也是使用 change 方法。不是重新创建对象 Timer 类型实例。
多谢
实例:MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
void ThreadFunction()
{
线程函数头临时停止:MotionTim.change((new TimeSpan(-1), new TimeSpan(0, 0, 0, 50));
.
线程函数
.
线程函数尾重新启用:MotionTim.change((new TimeSpan(0), new TimeSpan(0, 0, 0, 50));
}
这样可以么?
#16
System.Threading.Timer 对象实例,要临时停止定时,使用 change 方法;要启用它,也是使用 change 方法。不是重新创建对象 Timer 类型实例。
多谢
实例:MotionTim = new System.Threading.Timer(new TimerCallback(ScanAndSortThread), null, 0, 50);
void ThreadFunction()
{
线程函数头临时停止:MotionTim.change(-1, 50);
.
线程函数
.
线程函数尾重新启用:MotionTim.change(0, 50);
}
这样可以么?
#17
这个叫线程定时器!!!!
你提的问题做个很点单是实验就解决了,何必提问这么麻烦
你提的问题做个很点单是实验就解决了,何必提问这么麻烦