Создание консольного приложения C # для нескольких экземпляров - PullRequest
1 голос
/ 31 октября 2010

Я создаю консольное приложение, которое импортирует данные в базы данных.Это должно выполняться каждый час в зависимости от наличия входного CSV-файла.Приложение также необходимо повторно использовать для импорта других баз данных на том же сервере, например, может быть до 20 экземпляров одного и того же файла .exe, причем каждый экземпляр имеет свою собственную отдельную конфигурацию.

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

Я обеспокоен тем, что наличие 20 экземпляров одного и того же файла .exe, работающих на одном и том же компьютере каждый час, может привести к максимальной загрузке ЦП?

Что я могу сделать, чтобы решить эту проблему?Поможет ли многопоточность?

Ответы [ 4 ]

3 голосов
/ 31 октября 2010

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

2 голосов
/ 31 октября 2010

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

0 голосов
/ 01 августа 2013

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

0 голосов
/ 31 октября 2010

Нет, это не проблема с потоками.

Просто создайте системную с именем Mutex в начале приложения. При создании этого Mutex, посмотрите, существует ли он уже. Если это так, это означает, что запущен еще один экземпляр вашего приложения. На этом этапе вы можете дать пользователю сообщение (через консоль или окно сообщения), чтобы сообщить, что другой экземпляр уже запущен, и затем вы можете завершить приложение.

...