Exemple #1
0
        async Task SaveMefStateAsync(CompositionConfiguration config)
        {
            string filename    = GetCachedCompositionConfigurationFilename();
            bool   fileCreated = false;
            bool   deleteFile  = true;

            try {
                using (var cachedStream = File.Create(filename)) {
                    fileCreated = true;
                    long resourceManagerTokensOffsetTmp;
                    new CachedMefInfo(mefAssemblies, cachedStream).WriteFile(resourceManagerTokenCacheImpl.GetTokens(mefAssemblies), out resourceManagerTokensOffsetTmp);
                    await new CachedComposition().SaveAsync(config, cachedStream);
                    resourceManagerTokensOffset = resourceManagerTokensOffsetTmp;
                    deleteFile = false;
                }
            }
            catch (IOException) {
            }
            catch (UnauthorizedAccessException) {
            }
            catch (SecurityException) {
            }
            finally {
                if (fileCreated && deleteFile)
                {
                    try {
                        File.Delete(filename);
                    }
                    catch { }
                }
            }
        }
Exemple #2
0
        public void UpdateResourceManagerTokens(long resourceManagerTokensOffset, ResourceManagerTokenCacheImpl resourceManagerTokenCacheImpl)
        {
            if (resourceManagerTokensOffset < 0)
            {
                return;
            }
            stream.Position = resourceManagerTokensOffset;
            var writer = new BinaryWriter(stream);
            var tokens = resourceManagerTokenCacheImpl.GetTokens(assemblies);

            if (tokens.Length != assemblies.Length)
            {
                throw new InvalidOperationException();
            }
            foreach (var token in tokens)
            {
                writer.Write(token);
            }
        }