Exemplo n.º 1
0
 /// <summary>
 /// 指定したキーで待機します。
 /// </summary>
 /// <param name="key">待機するキー</param>
 public static void Wait(string key)
 {
     lock (LockObject)
     {
         if (!Semaphores.ContainsKey(key))
         {
             Semaphores.Add(key, new SemaphoreSlim(1, 1));
         }
     }
     Semaphores[key].Wait(3000);
 }
Exemplo n.º 2
0
        /// <summary>
        /// 指定したキーで待機します。
        /// </summary>
        /// <param name="key">待機するキー</param>
        public static async Task WaitAsync(string key)
        {
            await LockSemaphore.WaitAsync();

            try
            {
                if (!Semaphores.ContainsKey(key))
                {
                    Semaphores.Add(key, new SemaphoreSlim(1, 1));
                }
            }
            finally
            {
                LockSemaphore.Release();
            }
            await Semaphores[key].WaitAsync();
        }