Exemplo n.º 1
0
        public static Configuration GetConfig()
        {
            Mutex mutex;

            if (Mutex.TryOpenExisting(SharedConfigMutexName, out mutex))
            {
                using (var mf = MemoryMappedFile.OpenExisting(SharedConfigName))
                    using (var stream = mf.CreateViewStream())
                    {
                        try
                        {
                            mutex.WaitOne();
                            var reader = new StreamReader(stream);
                            var data   = reader.ReadToEnd();
                            return(StringSerializator.Deserialize <Configuration>(data));
                        }
                        finally
                        {
                            mutex.ReleaseMutex();
                        }
                    }
            }
            return(null);
        }
Exemplo n.º 2
0
        public void Publish(Configuration config)
        {
            var data = StringSerializator.SerializeToString(config);
            var size = Encoding.UTF8.GetByteCount(data);

            _configSharedFile = MemoryMappedFile.CreateNew(SharedConfigName, size + 1);

            _syncMutex = new Mutex(false, SharedConfigMutexName);
            try
            {
                _syncMutex.WaitOne();

                using (var stream = _configSharedFile.CreateViewStream())
                {
                    var writer = new StreamWriter(stream);
                    writer.Write(data);
                    writer.Flush();
                }
            }
            finally
            {
                _syncMutex.ReleaseMutex();
            }
        }