Почему Process.Start(file, arg) args не работает? ⇐ C#

Место общения программистов C#
Anonymous
Почему Process.Start(file, arg) args не работает?

Сообщение Anonymous »

Я пытаюсь создать приложение для чата и начинаю разрешать пользователю вставлять свой собственный порт. Когда вы нажимаете «Подключиться», программа проверяет, открыт ли сервер, иначе она найдет серверное приложение и откроет его с аргументом порта. Сервер получит порт через args.FirstOrDefault(defaultPort) и начнет прослушивать порт и ретранслировать соединения и сообщения. Process.Start(directory[0], [Port.ToString()]); Однако, когда я пытаюсь открыть сервер через чат, порт не передается в аргументы. Я проверил консоль, и сервер примет аргументы. Я ожидал, что сервер откроется с аргументами и начнет прослушивать порт, а клиент автоматически подключится к серверу. В настоящее время происходит следующее: сервер чата запускается, но сервер не получает аргумент и не выбирает порт по умолчанию. Это приводит к тому, что клиент пытается подключиться к порту, который ничего не прослушивает, что приводит к ошибке.
Весь код
try
{
_client.Connect(InternetIP, Port);
}
catch (Exception)
{
var User = Environment.UserName;
var directory = Directory.GetFiles($@"C:\Users\{User}\OneDrive\", "ChatServer.exe", SearchOption.AllDirectories);
if (directory == null)
{
directory = Directory.GetFiles($@"C:\Users\{User}\Downloads", "ChatServer.exe", SearchOption.AllDirectories);
if (directory == null)
{
directory = Directory.GetFiles($@"E:\", "ChatServer.exe", SearchOption.AllDirectories);
}
}
//The code thats breaking
Process.Start(directory[0], [Port.ToString()]);
//previous attempts
//Process.Start(pSI);
/*
ProcessStartInfo p = new ProcessStartInfo();
p.FileName = "ChatServer.exe";
p.WorkingDirectory = directory[0]
p.Arguments = "-f j -o \"" + Port.ToString();
Process.Start(p);//*/
//Process.Start(directory[0], $@"C:\{Port}");
/*var c = new Process();
c.StartInfo.FileName = directory[0];
c.StartInfo.Arguments = Port.ToString();
c.Start();//*/
/*Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
directory[0] = directory[0].Remove(0, 15);
p.StartInfo.Arguments = $"/C {directory[0]}";
p.Start();//*/
/*while (Process.GetProcessesByName("ChatServer").Length

Подробнее здесь: https://stackoverflow.com/questions/791 ... ot-working

Вернуться в «C#»