Запуск
Process console = Process.Start("Client.exe", "-filename:" + fname + " -list:" + myList)
выполнит myList.ToString() и будет переводить:
Client.exe -filename:testDoc -list:System.Collections.Generic.List`1[System.String]
, который не то, что вы хотите достичь. Попробуйте
Process console = Process.Start("Client.exe", "-filename:" + fname + " -list:" + String.Join(",", myList))
или что-то подобное.
UPDATE
Конечно, вы можете рассмотреть некоторые более цивилизованные методы передачи данных для этого процесса. Обычные способы включают в себя:
- база
- файловой системы (файлы)
- WCF
UPDATE
Учитывая контекст поставляется в комментарии, я выбрал бы для полностью автономная служба Windows, работающая на сервере (без остановки, не вызываемая) с базой данных, используемой для синхронизации:
- база данных с таблицей
Tasks
с колоннами input data
, output data
и любые другие вы можете (как некоторые даты или идентификаторы пользователя)
- веб-страницу вставки строк в эту таблицу, как обрабатываемый данных к появляется
- окна повторно (каждые х секунд) запрашивать таблицу для необработанных задач и выполнять задачи, если таковые имеются; Результаты спасаются в
output data
колонке
- по запросу пользователя веб-страницы запросов для данной задачи и отображает его статус, показывающий выходные данные, если он там
Это гораздо более надежный и лучше масштабируется с ростом пользовательского трафика ,Сама услуга идеально создавала рабочие потоки для отдельных задач, чтобы использовать преимущества нескольких ядер. Благодаря такой архитектуре существует множество способов оптимизации производительности и контроля за задачами.
Просто из любопытства. Сколько данных (длина байта) содержится в вашем списке? – Steve
Список содержит названия документов в форме: «GUID_fileName.pdf». О длине байта, который я не знаю, я должен посмотреть на это, так как названия будут отличаться друг от друга. – Francesco
Я спросил, потому что есть определенный предел для аргументов командной строки длина – Steve