public ActionResult CreateGame(MultiPlayerGameData multiPlayerGame) { bool gotLock = false; Guid guid = Guid.NewGuid(); Game CurrentGame = null; if (ValidatingNewGameForPlayer(null)) { try { LockListGameDoesntStart.AcquireWriterLock(timeOut); ListGameDoesntStart.Add(guid, new WeakReference <Game>(CurrentGame = new Game(multiPlayerGame) { IdentifyGuid = guid })); } catch { } finally { gotLock = LockListGameDoesntStart.IsWriterLockHeld; LockListGameDoesntStart.ReleaseWriterLock(); } } else { return(Json(new { GUID = (string)null })); } if (gotLock) { CurrentGame.Register(UserFiche.CurentUser); Game.GetUserBySesionFicheUser().UserCanStart = true; return(Json(new { GUID = guid.ToString() })); } throw new NotSupportedException("Nie udało się stworzyć nowej gry"); }