/// <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(); } }
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); }