使用System.Threading中的timer
Timer tmr = new(new TimerCallBack(DoTimer), state, 0, 100);void DoTimer(object state)
{
DOSOMETHING();
}DOSOMETHING()的操作时间比timer的时间间隔长,就是说第一次执行DoTimer后,DOSOMETHING开始,当第二次再执行DoTimer时,DOSOMETHING还没有执行完.
怎么做才能在DOSOMETHING执行的时候,再次执行DoTimer时不会同时有两个DOSOMETHING在执行.
Timer tmr = new(new TimerCallBack(DoTimer), state, 0, 100);void DoTimer(object state)
{
DOSOMETHING();
}DOSOMETHING()的操作时间比timer的时间间隔长,就是说第一次执行DoTimer后,DOSOMETHING开始,当第二次再执行DoTimer时,DOSOMETHING还没有执行完.
怎么做才能在DOSOMETHING执行的时候,再次执行DoTimer时不会同时有两个DOSOMETHING在执行.
解决方案 »
- 请教问题
- 插入语句有错误
- 关于c#中的textbox的接受制的问题
- 一个郁闷的算法问题。
- 使用VS2005如何逐句调试网站!
- csdn怎么了,老是出现“/”应用程序中的服务器错误,还有,它怎么能把具体的出错东西公开给用户看呢,你看下面的代码,多详细啊
- rpt报表文件放在某一下路径下,现在要根据图片路径把图片显示在报表上,该如何解决?
- SQL语句,查询分析器中可执行,SqlCommand 执行报错('go'附近有语法错误)
- 求助:用image控件显示从数据库中提取的图片,怎样可以控制显示出来的图片的大小和位置?
- 怎样将一个字符串转换为类进行引用?(好几天未解决,让我过个好年吧)
- socket问题
- C#怎么写接口
{
mx.WaitOne();
DOSOMETHING();
mx.ReleaseMutex();
}
{
tmr.stop();
DOSOMETHING();
tmr.start();
}
class Program
{
static void Main()
{
Timer tmr = new Timer(new TimerCallback(DoTimer), null , 0, 1000);
Console.Read();
}
//static Mutex mx = new Mutex();
static void DoTimer(object state)
{
//mx.WaitOne();
Console.WriteLine("test begin..");
Thread.Sleep(4000);
Console.WriteLine("test end...");
//mx.ReleaseMutex();
} }输出如下:
test begin..
test begin..
test begin..
test begin..
test begin..
test end..
test begin..
.....
当加上互斥量时:
class Program
{
static void Main()
{
Timer tmr = new Timer(new TimerCallback(DoTimer), null , 0, 1000);
Console.Read();
}
static Mutex mx = new Mutex();
static void DoTimer(object state)
{
mx.WaitOne();
Console.WriteLine("test begin..");
Thread.Sleep(4000);
Console.WriteLine("test end...");
mx.ReleaseMutex();
} }
输出如下所示:test begin..
test end..
test begin..
test end ..
test begin..
test end ..
.........
我的dosomething是一个关于ic卡读写卡的操作.调用的是第三方的动态库.因为不知道卡机上什么时候有ic卡,于是就设了个定时器过段时间发个指令出去读写一次卡.好像对用Mutex实现互斥没有太大的影响吧....楼主用Mutex实现不了吗?