Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Editor.IO
- {
- using System;
- using System.IO;
- using System.Windows.Forms;
- public class TempHelper : IDisposable
- {
- private string m_baseDirectory;
- private string m_buildDirectory;
- private string m_addendumDirectory;
- public TempHelper(string addendum)
- {
- m_addendumDirectory = addendum;
- CreateTempDirectory();
- }
- public string TempDirectory
- {
- get { return m_buildDirectory; }
- set { m_buildDirectory = value; }
- }
- /// <summary>
- /// Creates a temporary directory in which to build content.
- /// </summary>
- private void CreateTempDirectory()
- {
- // Start with a standard base name:
- //
- // %temp%\Editor.exe
- m_baseDirectory = Path.Combine(Path.GetTempPath(), Path.GetFileName(Application.ExecutablePath));
- // Include our process ID, in case there is more than
- // one copy of the program running at the same time:
- //
- // %temp%\Editor.exe\<ProcessId>
- //int processId = Process.GetCurrentProcess().Id;
- //string processDirectory = Path.Combine(baseDirectory, processId.ToString());
- // Include a salt value, in case the program
- // creates more than one ContentBuilder instance:
- //
- // %temp%\Editor.exe\<ProcessId>\<Salt>
- //directorySalt++;
- //buildDirectory = Path.Combine(processDirectory, directorySalt.ToString());
- if (!string.IsNullOrEmpty(m_addendumDirectory))
- m_buildDirectory = Path.Combine(m_baseDirectory, m_addendumDirectory);
- else
- m_buildDirectory = m_baseDirectory;
- // Create our temporary directory.
- Directory.CreateDirectory(m_buildDirectory);
- PurgeTempDirectory();
- }
- /// <summary>
- /// Deletes our temporary directory when we are finished with it.
- /// </summary>
- private void DeleteTempDirectory()
- {
- Directory.Delete(TempDirectory, true);
- }
- private void PurgeTempDirectory()
- {
- // Check all subdirectories of our base location.
- foreach (string directory in Directory.GetDirectories(m_buildDirectory))
- {
- Directory.Delete(directory, true);
- }
- }
- #region Implementation of IDisposable
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
- private void Dispose(bool disposing)
- {
- if (disposing)
- {
- DeleteTempDirectory();
- }
- }
- #endregion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement