背景:有两台电脑A,B
字段filed:A电脑中的状态字段(初始为false);
线程t1:运行在A电脑,时刻监听字段filed的状态,当filed为true的时候,然后进行操作再将filed设置为false;
url1:电脑B调用电脑A中的方法,改变field的状态(filed改变为true);
url2:电脑B调用电脑A中的方法,但是需要url1改变状态之后,线程t1执行完才能运行的方法(但是现实中是执行完url1的方法之后,t1线程还没走接着执行url2中的方法了,所以需要在url2调用的方法中添加一个线程进行时刻检测filed的状态然后进行操作)
添加线程的两种方式:
1.每隔100ms执行一次,最多执行三秒(三十次100ms)
Thread thread = new Thread(() => {
int n = 0;
while (n < 30)
{
n++;
if (!filed)
{
do something....
break;
}
Thread.Sleep(100);
}
});
thread.Start();
2.
private static System.Timers.Timer aTimer;//全局变量
url2方法内
aTimer = new System.Timers.Timer(100);//100ms执行一次
DateTime dt = DateTime.Now;
TimeSpan ts1 = new TimeSpan(dt.Ticks);
aTimer.Elapsed += new ElapsedEventHandler((sender, e) => OnTimedEvent(sender, e, a, ts1.Subtract(new TimeSpan(DateTime.Now.Ticks)).Duration().Seconds));//OnTimedEvent绑定的方法,ts1.Subtract(new TimeSpan(DateTime.Now.Ticks)).Duration().Seconds计算aTimer执行了多少秒
aTimer.Interval = 2000;
aTimer.Enabled = true;
aTimer绑定的方法
private static void OnTimedEvent(object source, ElapsedEventArgs e, int a,int ta)
{
if (ta>=3)
{
aTimer .Close();
return;
}
if (!filed)
{
aTimer.Close();
do something......
Console.WriteLine("The Elapsed event was raised at {0},{1},{2}", e.SignalTime, +Thread.CurrentThread.ManagedThreadId,ta);
}
}