Beispiel #1
0
        public void Save()
        {
            if (!_isWriting)
            {
                throw new InvalidOperationException("Database not opened for writing");
            }

            ManualResetEvent databaseAccess;

            lock (_databasesAccessible)
            {
                string databaseHash = CryptoServiceHandler.GenerateHash(_databaseFile.Name.Trim().ToLower());
                if (_databasesAccessible.TryGetValue(databaseHash, out databaseAccess))
                {
                    while (!databaseAccess.Reset())
                    {
                        databaseAccess.WaitOne();
                    }
                }
                else
                {
                    databaseAccess = new ManualResetEvent(false);
                    _databasesAccessible.Add(databaseHash, databaseAccess);
                }
            }
            try
            {
                _saveEntryNumber = 0;
                _databaseFile.Save();
            }
            finally
            {
                databaseAccess.Set();
            }
        }
Beispiel #2
0
        private static void WaitForAccess(string databaseFilePath)
        {
            ManualResetEvent databaseAccess;
            string           databaseHash = CryptoServiceHandler.GenerateHash(databaseFilePath.Trim().ToLower());

            if (_databasesAccessible.TryGetValue(databaseHash, out databaseAccess))
            {
                databaseAccess.WaitOne();
            }
        }