public ManagerController()
 {
     ManagerSettingsLoadedFromFile = false;
     ManagerSettings   = new ManagerSettings();
     _backupController = new BackupController();
     _LoadCommandDefinitions();
     _LoadSettings();
     ServerSettings = new AvorionServerSettings();
     ServerSettingLoadedFromFile = false;
     LoadServerSettings();
     BackupSettings = new BackupSettings();
     BackupSettingsLoadedFromFile = false;
     LoadBackupSettings();
 }
        public void CreateBackup(string dataPath, BackupSettings backupSettings)
        {
            Thread tmpCopyThread = new Thread(() =>
            {
                try
                {
                    string dateTimeString = DateTime.Now.ToString("dd-MM-yyyy_hh-mm-ss-f");
                    string tmpBackupPath  = Path.Combine(backupSettings.BackupPath, Path.GetFileName(dataPath.TrimEnd(Path.DirectorySeparatorCh‌​ar)) + dateTimeString);

                    if (Directory.Exists(dataPath))
                    {
                        lock (_lockObject)
                        {
                            CopyHelper.CopyDirectory(dataPath, tmpBackupPath);
                        }
                        if (backupSettings.CompressBackups)
                        {
                            Thread tmpThread = new Thread(() =>
                            {
                                lock (_lockObject)
                                {
                                    ZipFile.CreateFromDirectory(tmpBackupPath, tmpBackupPath + ".zip", CompressionLevel.Fastest, false);
                                    Directory.Delete(tmpBackupPath, true);
                                }
                            });
                            tmpThread.IsBackground = true;
                            tmpThread.Start();
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error while running Backup task: " + ex.Message);
                }
            });

            tmpCopyThread.IsBackground = true;
            tmpCopyThread.Start();
        }