Skip to main content
 首页 » 编程设计

c#之如何使用 Mutex 创建锁

2024年02月20日35pander-it

我在我的类中定义了一个 Mutex(全局):

static Mutex fooMutex; 

我想锁定一些东西,这样用户就不会看到每 3 秒点击一次图像的效果:

private void Image_Tap_1(...) 
{ 
            bool isRunnng = true; 
            try 
            { 
                Mutex.OpenExisting("foo"); 
            } 
            catch 
            { 
                isRunnng = false; 
                fooMutex = new Mutex(true, "foo"); 
            } 
 
            if (!isRunnng) 
            { 
                fooFadeIn.Begin(); 
                fooFadeIn.Completed += fooFadeIn_Completed; 
            }  

并在 Completed 上处理:

private void fooFadeIn_Completed(...) 
{ 
   fooMutex.Dispose() 

但这行不通,有人知道吗?

请您参考如下方法:

无需使用互斥锁或计时器,您可以只存储上次点击图像的时间:

private DateTime lastTap; 
 
private void Image_Tap_1(...) 
{ 
    var now = DateTime.Now; 
 
    if ((now - lastTap).TotalSeconds < 3) 
    { 
        return; 
    } 
 
    lastTap = now; 
 
    // More than 3 seconds since last tap 
    ... 
}