我想知道如何实现以下限制:在早期调用完成之前,不应再次调用Windows服务中的一种方法.有问题的方法通过几个数据库表进行,非常重要的是在完成之前不会再次调用此过程.我有一个设置,定义我的服务将激活的频率,在正常情况下,它永远不会在早期调用完成之前激活(因为整个过程不应超过几分钟,间隔设置为10分钟)但不是果然.我猜.
怎么实现这个?
use*_*116 12
您可以使用命名的Mutex或命名的Semaphor e来确保只有一个Mutex/Semaphore的持有者一次执行.正如评论者指出的那样,请记住,必须小心不要放弃互斥锁或不正确地获取/释放信号量.
一种方法是使用锁定:
private readonly object myLock = new object();
private void MyMethod()
{
lock(myLock)
{
//code goes here
}
}
Run Code Online (Sandbox Code Playgroud)
这可以确保此方法永远不会再运行一次.
| 归档时间: |
|
| 查看次数: |
8043 次 |
| 最近记录: |