示例#1
0
        private Athlete LoadAthlete(string athleteId)
        {
            Athlete athlete;

            if (individualAthletes.TryGetValue(athleteId, out athlete))
            {
                return(athlete);
            }

            try
            {
                using (Stream stream = new MemoryStream(dataFolder.Open(GetAthleteFileName(athleteId))))
                    using (TextReader textReader = new StreamReader(stream, true))
                        using (JsonReader jsonReader = new JsonTextReader(textReader))
                        {
                            athlete = serializer.Deserialize <Athlete>(jsonReader);
                            individualAthletes[athleteId] = athlete;
                            return(athlete);
                        }
            }
            catch (IOException)
            {
                return(null);
            }
        }
示例#2
0
        public List <StartingListEntry> GetStartingList()
        {
            try
            {
                mutex.EnterReadLock();
                if (startingList != null)
                {
                    return(startingList);
                }
            }
            finally
            {
                mutex.ExitReadLock();
            }
            try
            {
                mutex.EnterWriteLock();
                if (startingList != null)
                {
                    return(startingList);
                }

                try
                {
                    using (Stream stream = new MemoryStream(dataFolder.Open("startinglist.json"), false))
                        using (TextReader textReader = new StreamReader(stream, true))
                            using (JsonReader jsonReader = new JsonTextReader(textReader))
                            {
                                startingList = serializer.Deserialize <List <StartingListEntry> >(jsonReader) ?? new List <StartingListEntry>();
                            }
                }
                catch (IOException)
                {
                    startingList = new List <StartingListEntry>();
                }
                return(startingList);
            }
            finally
            {
                mutex.ExitWriteLock();
            }
        }
示例#3
0
        private void EnsureDataLoaded()
        {
            if (entries != null)
            {
                return;
            }

            try
            {
                using (Stream stream = new MemoryStream(dataFolder.Open("races.json"), false))
                    using (TextReader textReader = new StreamReader(stream, true))
                        using (JsonReader jsonReader = new JsonTextReader(textReader))
                        {
                            entries = serializer.Deserialize <List <RaceIndexEntry> >(jsonReader) ?? new List <RaceIndexEntry>();
                        }
            }
            catch (Exception)
            {
                entries = new List <RaceIndexEntry>();
            }
        }