Как запустить несколько экземпляров приложения WinForms - PullRequest
0 голосов
/ 17 февраля 2020

Я разработал приложение WinForms для двух целей

1) Оно имеет форму, которая будет принимать конфигурацию от пользователя и сохранять ее

2) На основе значений конфигурации, введенных в шаге 1. будет создан планировщик задач, который будет передавать файлы из локальной папки на FTP

Теперь, когда задача выполняется из планировщика и в то же время, если я открою форму, она выдаст мне ошибку типа

Process/exe is already in use. Cannot start new instance.

Можно ли открыть форму в ином экземпляре, чем в задаче планировщика?

[STAThread]
static void Main(string[] args)
{

if (args.Length > 0 && args[0] == "AutoRun")
{
Logger.Info("Auto run successfull.");
GetConfigValues getConfigValues = new GetConfigValues();
UploadToFTP uploadToFTP = new UploadToFTP();
string result = uploadToFTP.UploadFile(getConfigValues.LocalPath, getConfigValues.FTPServer, getConfigValues.FTPFolderPath, getConfigValues.FTPUsername, getConfigValues.FTPPassword);
}
else
{
Logger.Info("Manual run successfull.");
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Login());
    }
}

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Предполагается, что это относится к планировщику задач, а не к вашему приложению, а именно:

Вы можете настроить поведение задачи планировщика задач, когда целевой процесс уже запущен. В пользовательском интерфейсе это на вкладке Settings «Если задача уже запущена ...». По умолчанию «Не запускать новый экземпляр»; вероятно, вам нужно «запустить новый экземпляр параллельно», хотя лучшим вариантом, вероятно, будет другой исполняемый файл для обработки фоновых задач и постановка в очередь последовательных запусков.

0 голосов
/ 17 февраля 2020

Вы уже дали if else для автозапуска и руководства. Пожалуйста, проверьте, будет ли запускаться вручную при нажатии.

Другой вариант - запустить из другой папки

...