Ваш код выглядит хорошо, но я нашла несколько мест, где вы можете его улучшить:
- Вместо использования `
Task.Run ` для запуска асинхронного метода, вы можете просто вызвать его с `await` в `Main` методе. Это позволит вам избежать блокировки основного потока и обрабатывать исключения более эффективно.
- Ваш метод `OpenPhotoshop` пустой, поэтому он ничего не делает. Вы можете использовать класс `Process` для запуска приложения Photoshop с помощью метода `Process.Start`. Вы также можете сохранить ссылку на запущенный процесс в переменной `photoshopProcess`, чтобы вы могли его закрыть или взаимодействовать с ним позже.
- Ваш метод `ClosePhotoshop` также пустой, поэтому он ничего не делает. Вы можете использовать метод `Process.Kill` для завершения процесса Photoshop, если он еще не вышел. Вы также можете проверить, не равна ли переменная `photoshopProcess` `null`, прежде чем пытаться ее убить, чтобы избежать ошибок.
- Ваш метод `SaveFile` выглядит неплохо, но вы можете сделать его более универсальным, передавая имя файла в качестве параметра. Таким образом, вы сможете сохранять разные файлы с помощью одного и того же метода. Вы также можете использовать `Path.Combine` для объединения частей пути к файлу, чтобы избежать проблем с разделителями.
using System;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
class JarvisAssistant
{
private static SpeechRecognizer recognizer;
private static Process photoshopProcess;
static async Task Main()
{
await RunAssistantAsync();
}
static async Task RunAssistantAsync()
{
recognizer = new SpeechRecognizer(new SpeechConfig(SpeechConfigType.FromSubscription, "ключ_от_Services"));
recognizer.Recognized += async (s, e) =>
{
string command = e.Result.Text.ToLower();
if (command == "открой фотошоп")
{
OpenPhotoshop();
}
else if (command == "закрой фотошоп")
{
ClosePhotoshop();
}
else if (command.StartsWith("сохрани файл"))
{
string fileName = command.Substring("сохрани файл".Length).Trim();
SaveFile(fileName);
}
else
{
}
};
}
private static void OpenPhotoshop()
{
try
{
photoshopProcess = Process.Start("photoshop.exe");
Console.WriteLine("Фотошоп открыт.");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка при открытии фотошопа: {ex.Message}");
}
}
private static void ClosePhotoshop()
{
try
{
if (photoshopProcess != null && !photoshopProcess.HasExited)
{
photoshopProcess.Kill();
Console.WriteLine("Фотошоп закрыт.");
}
else
{
Console.WriteLine("Фотошоп уже закрыт или не был открыт.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка при закрытии фотошопа: {ex.Message}");
}
}
private static void SaveFile(string fileName)
{
try
{
if (photoshopProcess != null && !photoshopProcess.HasExited)
{
string saveScriptPath = Path.Combine(@"C:\путь_к_вашему_скрипту", fileName);
photoshopProcess.StartInfo.FileName = "photoshop.exe";
photoshopProcess.StartInfo.Arguments = $@"""{saveScriptPath}""";
photoshopProcess.Start();
Console.WriteLine($"Файл {fileName} сохранен.");
}
else
{
Console.WriteLine("Фотошоп файл не был отредактирован.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка при сохранении файла: {ex.Message}");
}
}
}
using System.Diagnostics;
using System.Threading.Tasks;
class JarvisAssistant
{
private static SpeechRecognizer recognizer;
private static Process photoshopProcess;
static void Main()
{
Task.Run (async () => await RunAssistantAsync()).Wait();
}
static async Task RunAssistantAsync()
{
recognizer = new SpeechRecognizer(new SpeechConfig(SpeechConfigType.FromSubscription, "ключ_от_Services"));
recognizer.Recognized += async (s, e) =>
{
string command = e.Result.Text.ToLower();
if (command == "открой фотошоп")
{
OpenPhotoshop();
}
else if (command == "закрой фотошоп")
{
ClosePhotoshop();
}
else if (command == "сохрани файл")
{
SaveFile();
}
else
{
}
};
}
private static void OpenPhotoshop()
{
}
private static void ClosePhotoshop()
{
}
private static void SaveFile()
{
try
{
if (photoshopProcess != null && !photoshopProcess.HasExited)
{
string saveScriptPath = @"C:\путь_к_вашему_скрипту\SaveFile.jpg";
photoshopProcess.StartInfo.FileName = "photoshop.exe";
photoshopProcess.StartInfo.Arguments = $@"""{saveScriptPath}""";
photoshopProcess.Start();
Console.WriteLine("Файл сохранен .");
}
else
{
Console.WriteLine("Фотошоп файл не был отредактирован.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка при сохранении файла: {ex.Message}");
}
}
}