返回信息流请问在一个循环中定时执行某段代码若时间没到代码执行完则结束,若时间到了代码则终止
for(i=0;i<循环的次数;i++)
{
this.Timer.Interval=100;
this.timer.enabled; 或者this.timer.start();//?
if(timer定时没到&&没有接收到数据)
{
继续接收数据
}
if(timer定时到&&没有接收到数据)
{
停止时间
停止接收数据
}
if(接收到数据)
{
停止时间
处理数据
}
}
但是时间到没到怎么判断?
timer_tick()可以吗?还是Timer.Elapsed?
这是一条镜像帖。来源:北邮人论坛 / dot-net / #3935同步于 2012/10/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖
任务放到一个独立线程中另一个线程负责计时控制,到时杀线程
wzl2011
2012/10/23镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
Module Module1
Sub Main()
For i As Integer = 0 To 3
Dim t As New Threading.Thread(AddressOf doWork)
t.Start(i)
t.Join(100)
t.Abort()
Next
Console.ReadLine()
End Sub
Sub doWork(e As Object)
Select Case DirectCast(e, Integer)
Case 0
Console.WriteLine(Now.ToString("HH:mm:ss.fff") + "ends immediately")
Case 1
Console.WriteLine(Now.ToString("HH:mm:ss.fff") + "start and sleep 200ms")
Threading.Thread.Sleep(200)
Console.WriteLine(Now.ToString("HH:mm:ss.fff") + "this won't be displayed")
Case 2
Console.WriteLine(Now.ToString("HH:mm:ss.fff") + "ends immediately")
End Select
End Sub
End Module
我想到的最简单的办法是用Thread.Join。。。但是计时在ms级别就没那么精确了
【 在 Kazuki 的大作中提到: 】
: Module Module1
: Sub Main()
: For i As Integer = 0 To 3
: ...................
请问这是C#语言吗 我有点看不懂嗯
这是VB.net,VB.net和C#在CLR层面是一样的,语法稍有不同,C#我不太会写,你可以看看这个:
http://msdn.microsoft.com/zh-cn/library/6b1kkss0.aspx
【 在 wzl2011 的大作中提到: 】
: 请问这是C#语言吗 我有点看不懂嗯
上错号了,这个是我说的
【 在 duvet 的大作中提到: 】
: 这是VB.net,VB.net和C#在CLR层面是一样的,语法稍有不同,C#我不太会写,你可以看看这个:
: http://msdn.microsoft.com/zh-cn/library/6b1kkss0.aspx
纯粹转译,向LSS致敬~
using System;
using System.Threading;
namespace Module
{
class Program
{
private static int index = 0;
static void Main(string[] args)
{
for(index = 0; index < 3; index++){
Thread t = new Thread(doWork);
t.Start();
t.Join(100);
t.Abort();
}
}
static void doWork(){
switch(index)
{
case 0:
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + "ends immediately");
break;
case 1:
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + "start and sleep 200ms");
Thread.Sleep(200);
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + "this won't be displayed");
break;
case 2:
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + "ends immediately");
break;
}
}
}
}
【 在 Kazuki 的大作中提到: 】
: Module Module1
: Sub Main()
: For i As Integer = 0 To 3
: ...................
假设hThread1是要监视的线程,在thread 2中:
result = waitforsingleobject(hThread1, 时间);
if( result == time_out 或者是 getlasterror() == time_out )
teninate_thread(hThread1)