private static string _currentlyOpenedFile = "Untitled.mml";                             // Открытый в данный момент файл

        /// <summary>
        /// Функция SaveFile(InputData inpDObj)
        /// 
        /// Сохраняет объект в файл. Введенные пользователем данные, сформированные в объект
        /// сохраняются в JSON формате
        /// </summary>
        /// <param name="inpDObj"></param>
        public async static Task SaveFile(InputData inpDObj)
        {
            if (inpDObj == null) return;                                                        // Если поступил null объект, выходим из функции
            if (_currentlyOpenedFile != "Untitled.mml")                                         // Если был открыт файл, перезаписываем в него
            {
                await OutputObjectToFile(inpDObj, _currentlyOpenedFile);                        // Выводим объект в этот файл
            }
            else                                                                                // Если нет, то
            {
                await SaveAsFile(inpDObj);                                                      // Действуем по аналогии с SaveAs
            }
        }
 /// <summary>
 /// Функция SaveFile(InputData inpDObj)
 /// 
 /// Сохраняет объект в файл, предложив окно сохранения. Введенные пользователем данные, сформированные в объект
 /// сохраняются в JSON формате
 /// </summary>
 /// <param name="inpDObj"></param>
 public async static Task SaveAsFile(InputData inpDObj)
 {
     var sdg = new Microsoft.Win32.SaveFileDialog                                    // Создаем диалоговое окно сохранения 
     {
         FileName = "Document",                                                      // Имя файла по умолчанию
         DefaultExt = ".mml",                                                        // Расширение файла по умолчанию
         Filter = "MM Data (.mml)|*.mml"                                             // Фильтр расширений файла
     };
     var result = sdg.ShowDialog();                                                  // Открывает диалоговое окно сохранения
     if (result != true) return;                                                     // Обрабатываем результат выполнения диалогового окна сохранения
     var filename = sdg.FileName;                                                    // Получаем имя файла, введенное пользователем
     await OutputObjectToFile(inpDObj, filename);                                    // Записываем объект в файл
     _currentlyOpenedFile = filename;                                                // Сохраняем имя файла
 }
 /// <summary>
 /// Функция OutputObjectToFile(InputData inDObj, string filename)
 /// 
 /// Функция, выводящая объект в заданный файл
 /// </summary>
 /// <param name="inDObj"></param>
 /// <param name="filename"></param>
 private async static Task OutputObjectToFile(InputData inDObj, string filename)
 {
     if (File.Exists(filename)) File.Delete(filename);                         // Если файл существует, удаляем его
     var json = JsonConvert.SerializeObject(inDObj);                           // Сериализуем объект в строку JSON
     using (var swt = new StreamWriter(new FileStream(filename,                // Вывод в файл
         FileMode.OpenOrCreate, FileAccess.Write)))
     {
         await swt.WriteAsync(json);                                           // Записываем строку в файл
         swt.Close();                                                          // Закрываем поток записи
     }
 }