while { //可不可以限定每次经过的时间 把这段单独开个线程 然后用t.jion(时间) 这样如果在时间内结束则返回TRUE 否则超时返回FALSE //如果超时了就continue; }
using System; using System.Threading;namespace TestConsole { class Program { static void Main(string[] args)
while(int i = 0; i < 100; i++) { Thread t1 = new Thread(ThreadCheckTime); t1.Start(); Thread.Sleep(10000); if (t1.ThreadState==ThreadState.Stopped) continue; Console.WriteLine("this is the main tread. "); t1.Interrupt(); }
} static void ThreadCheckTime() { Thread.Sleep(1000); Console.WriteLine("Search is time out. "); } } }
while(int i = 0; i < 100; i++) { Thread t1 = new Thread(ThreadCheckTime); t1.Start(); // Thread.Sleep(10000); //代码体写在这里的话,下面的判断还不是要等到这段代码体完成? if (t1.ThreadState==ThreadState.Stopped) continue; Console.WriteLine("this is the main tread. "); t1.Interrupt(); }
{
//可不可以限定每次经过的时间 把这段单独开个线程
然后用t.jion(时间) 这样如果在时间内结束则返回TRUE 否则超时返回FALSE
//如果超时了就continue;
}
using System.Threading;namespace TestConsole
{
class Program
{
static void Main(string[] args)
while(int i = 0; i < 100; i++)
{
Thread t1 = new Thread(ThreadCheckTime);
t1.Start();
Thread.Sleep(10000);
if (t1.ThreadState==ThreadState.Stopped)
continue;
Console.WriteLine("this is the main tread. ");
t1.Interrupt();
}
} static void ThreadCheckTime()
{
Thread.Sleep(1000);
Console.WriteLine("Search is time out. ");
}
}
}
{
Thread t1 = new Thread(ThreadCheckTime);
t1.Start();
// Thread.Sleep(10000);
//代码体写在这里的话,下面的判断还不是要等到这段代码体完成?
if (t1.ThreadState==ThreadState.Stopped)
continue;
Console.WriteLine("this is the main tread. ");
t1.Interrupt();
}
不对,至少是t1.Abort();
这个代码有问题,Thread.Sleep(100000000000)
还是要等他sleep完了才continue.
另,
以上错误代码,出自本人...
设定一个全局变量startime记录循环开始的时间startime=now();while
{
if (now()-startime=***)
则退出循环
}
取系统时间不是很好么。
侦听开始后,如果有信息过来,就开始接收,并记录开始时间
如果在在一段时间内还没有收到结束标志,就要做异常处理
/* 限制的时间*/
System.Threading.Thread.Sleep(3000/* 这里是3秒*/);
/*
这里是你的业务代码*/
}
很方便的,设置一个时间间隔就OK了。
{
// your code
}
设置一个timer,线程一run,就打开这个timer,如果timer到了,就看线程是不是还在运行,是就杀掉
如果,线程已经做完了,时间还没有到,这个需要设置一个全局的变量,来表明状态,在线程结束的地方关掉这个timer