Запуск приложения Windows Forms (C # .NET 4.0) из командного файла с аргументами командной строки - PullRequest
1 голос
/ 03 сентября 2011

Я разработчик Silverlight / ASP.NET, пытаюсь написать свое первое приложение Windows Forms, которое будет работать в фоновом режиме на сервере, заполняя нашу базу данных.В конце концов, хотелось бы, чтобы это была служба Windows, но изначально она не требуется.

Мне нужно создать пакетный файл для выполнения 5 экземпляров этого приложения, передав URL-адрес 5 конечным точкам RESTful.Поэтому я опубликовал свое приложение, в котором был создан файл setup.exe.После установки у меня есть пункт, который указывает на

C:\Users\mi2dev\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Microsoft\, с файлом .appref-ms.

Я не уверен на данный момент, что делать.Запуск:

"C: \ Users \ mi2dev \ AppData \ Roaming \ Microsoft \ Windows \ Пуск \ Меню \ Программы \ Microsoft \ StreamingApp.appref-ms" - "http://www.myURL.com" на короткое время выдает окно команд, ноприложение не запускается, данные не заполняются в БД.

Что мне здесь не хватает?

Ответы [ 3 ]

1 голос
/ 03 сентября 2011

Трудно понять, что происходит внутри вашего приложения. Вам нужно отладить, чтобы понять, что там происходит, когда он получает заданные параметры. Поэтому я бы предложил отладить EXE. Для этого перейдите в свойства вашего проекта EXE, выберите вкладку DEBUG в CommandLineArguments и вставьте строку параметров. Запустите его в DEBUG и, надеюсь, вы обнаружите проблему.

Screen

Если после отладки пока не ясно, почему он так себя ведет, вернитесь к SO:)

1 голос
/ 03 сентября 2011

Silvi, если вы планируете использовать приложение Windows Forms из пакетного файла, и вы предполагаете, что приложение будет вести себя в таком режиме иначе, чем при открытии двойным щелчком, обычный подход - это анализ командной строки (аргументы, также доступные в основной метод в качестве параметра) и вообще не загружать пользовательский интерфейс.

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

Что вы можете сделать, это проверить внутри метода Main, есть ли параметры командной строки, и если вы обнаружите какие-либо из определенных вами определенных параметров, вы действительно избегаете даже вызывать Application.Run(new Form1(...)); и начать работать в пакетном режиме без пользовательского интерфейса.

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

1 голос
/ 03 сентября 2011

, поскольку ваше приложение имеет формат .exe.И заставьте вашу winform принимать аргументы командной строки (проверьте метод main), также сделайте так, чтобы ваш Form ctor тоже принимал params.Затем просто запустите его через строку cmd так же, как и другую команду, но здесь только для перехода к тому каталогу, где существует файл.

В случае пакета, используйте команду запуска, затем имя программы и затем аргументы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...