2013-01-13 42 views
1

我在類中定義的互斥鎖(全局):如何使用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; 
      } 

而且配置上完成:

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

但是,這並不工作,任何人有一個想法?

+3

啓動GUI線程。也許你應該禁用圖像,並使用計時器在3秒內再次啓用它? –

回答

4

而不是使用一個互斥體或定時器,你可以存儲在該圖像最後拍了拍時間:我不相信,一個互斥體是最好的選擇,在這裏,因爲它可以鎖定

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 
    ... 
}