istudent Ответов: 2

Что мне сделать, чтобы exe-файл запускался одновременно в одно и то же время?


I have a console application (exe assembly) which i need to set up as a scheduled task.

based on passed arguements in main method, It performs two different functions. 

I have set up two job name pointing to the same exe and each has got its own arguements.

what do i do to make it run simultaneously at the same time?


Что я уже пробовал:

static void Main(string[] args)
{
 if (args.Length > 0)
                {
                    if (args[0].Trim().ToLower() =="excel")
                    {
                       CreateExcelFile();
                    }
                }
                else
                {
				CreatePdfFile();
				}
}

Richard MacCutchan

С этим нет никаких проблем, вы можете запускать столько копий одного и того же приложения одновременно, сколько захотите; при условии, конечно, ограничения системных ресурсов.

Richard Deeming

Мы не можем видеть, что делает ваш код. Но, основываясь на именах функций, я предполагаю, что вы используете Office Interop, который не будет работать с запланированной задачей.

Рекомендации по автоматизации работы офиса на стороне сервера[^]
"В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и/или взаимоблокировку при запуске Office в этой среде."

Запланированные задачи считаются автоматическими неинтерактивными приложениями.

Существуют различные способы создания электронных таблиц Excel без использования Office interop. Например:
* EPPlus[^];
* ClosedXML[^];
* SDK OpenXML[^];

istudent

Я использую EPPlus Lib для создания файла excel.

istudent

Я использовал тот же файл для записи деталей журнала

istudent

В результате последнего запуска я получаю код ошибки 0xC00000FD к тому(excel), где я передал аргумент "excel". но другая задача выполняется успешно. Я установил оба триггера для запуска в одно и то же время.

2 Ответов

Рейтинг:
16

Dave Kreskowiak

Ваше описание проблемы совсем не ясно.

В планировщике задач вы можете запланировать столько задач, сколько захотите, и они могут быть выполнены одновременно. Вы просто устанавливаете время в задаче, когда вы хотите, чтобы она выполнялась. Ничто не говорит о том, что вы можете одновременно выполнять только одну задачу.

В вашем случае вы устанавливаете две запланированные задачи, каждая из которых имеет один и тот же исполняемый файл, но разные параметры в зависимости от того, что вы хотите, чтобы этот экземпляр выполнял.


istudent

У меня есть экзекутор, говорят мои app.exe, я хочу запустить этот один exe-файл одновременно и выполнить две задачи одновременно. Я создал две задачи, назвал их excel task with arg и pdf task without arg и указал на один и тот же exe-файл и установил его срабатывание с разницей в пару секунд. Но pdf работает успешно, но другие не могут с кодом ошибки 0xc00000bf я не уверен, что это bf, чтобы быть точным прямо сейчас. Это связано с тем, что main является статическим методом, он не позволяет запускать два экземпляра одного и того же exe-файла?

Dave Kreskowiak

Это будет проблема с вашим кодом, а не с планировщиком или запуском двух экземпляров вашего приложения одновременно.

0xc00000bf означает "плохой сетевой путь", так что... поскольку мы ничего не знаем о том, что делает ваш код и как он пытается это сделать, на самом деле никто не может вам сказать.

Итак, что же делает ваш код, который включает в себя сетевые пути?

istudent

Извините, код ошибки-0xC00000FD

Dave Kreskowiak

0xC00000FD должно быть "переполнение стека". В вашем коде что-то не так, но поскольку мы не можем видеть, что вы кодируете, и ничего об этом не знаем, невозможно сказать вам, что именно не так.

istudent

Предыстория приложения такова, что у нас было это приложение для записи pdf-файлов.
Теперь нам нужно добавить functionailty, чтобы добавить файлы excel также для другого отдела.
Создание Pdf-файла происходит один раз в неделю, в то время как excel-файл-ежедневно.

Итак, я изменил приложение так, что если arg 'excel' прошел, сделайте файл excel createion
и передал арг, пока я настраивал задание и запускал его для ежедневного запуска.

При этом мне не пришлось обновлять старую работу, которая создавала pdf-файл, так как мы никогда не проходили никаких споров
при установке работу.

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

Связано ли это с тем, что когда оба запуска выполняются одновременно, оба пытаются одновременно записать данные в один и тот же файл?

Dave Kreskowiak

Оба экземпляра приложения не могут открыть для доступа на запись один и тот же файл одновременно.

Если вам действительно нужно записать это в журнал, вы можете написать код, чтобы открыть файл, поймать исключения при его открытии, а затем немного подождать и повторить операцию.

istudent

Да, сэр, я справился с ситуацией, создав два разных файла для записи журнала.

Рейтинг:
1

istudent

Я выяснил причину ошибки при одновременном запуске exe-файла. Оба задания пытаются использовать один и тот же файл журнала для записи журнала. Я разделил файлы журналов для каждого задания. Теперь он не выдает никаких ошибок.

Спасибо вам, ребята, что протянули мне руку помощи.