コード例 #1
0
        /// <summary>
        /// Releases unmanaged and - optionally - managed resources.
        /// </summary>
        /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        protected override void Dispose(bool disposing)
        {
            m_mutex.WaitOne();
            try
            {
                m_indexOutput.Flush();
                m_indexOutput.Dispose();

                //Ship the file bytes to SharePoint.
                using (var fileStream = new StreamInput(m_directory.CacheDirectory.OpenInput(m_fileName)))
                {
                    fileStream.Seek(0, SeekOrigin.Begin);

                    //Create a new site/web since SharePoint access is inheritly single-threaded.
                    using (var site = new SPSite(m_directory.Site.ID))
                    {
                        using (var web = site.OpenWeb())
                        {
                            var folder = web.GetFolder(m_fileUrl);
                            var file   = folder.Files.Add(m_fileUrl, fileStream, true);
                            m_directory.WriteCachedFileETag(file.Name, file.ETag);
                        }
                    }
                }
            }
            finally
            {
                m_mutex.ReleaseMutex();
            }
        }
コード例 #2
0
        private static void CreateOrUpdateCachedFile(SPFile spFile, SPDirectory directory)
        {
            using (var spFileStream = spFile.OpenBinaryStream())
            {
                using (var outputStream = directory.CreateCachedOutputAsStream(spFile.Name))
                {
                    DocumentStoreHelper.CopyStream(spFileStream, outputStream);
                    outputStream.Flush();
                }
            }

            directory.WriteCachedFileETag(spFile.Name, spFile.ETag);
        }