Гость
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обратиться к процессу несколько раз / 2 сообщений из 2, страница 1 из 1
22.09.2021, 10:38
    #40099190
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обратиться к процессу несколько раз
Раньше я запускал процес на одноразовое исполнение
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
static string RunProcess(string exe_name, string args)
{
    /* Create a new process object*/
    Process proc = new Process();
    /* StartInfo contains the startup information of the new process */
    proc.StartInfo.FileName = exe_name;
    proc.StartInfo.Arguments = args;
    /* These two optional flags ensure that no DOS window appears */
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.CreateNoWindow = true;
    /* This ensures that you get the output from the DOS application */
    proc.StartInfo.RedirectStandardOutput = true;
    try
    {
        // Start the process
        proc.Start();
        // Wait that the process exits
        proc.WaitForExit();
        // Now read the output of the DOS application 
        return proc.StandardOutput.ReadToEnd().ToString();
    }
    catch (Exception ex)
    {
        return "Error: " + ex.Message;
    }
}



Теперь мне надо обратиться к одному процессу несколько раз.
Для этого сам запускаемый процес я запускаю в цикле
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
static void Main()
{
    string[] args;
    while(true)
    { 
        args = Environment.GetCommandLineArgs();

        if (args.Length > 1)
        {
            if (args[2]==”init”)  
                //do something

            if (args[2]==”set”)  
                //do something

             if (args[2]==”exit”)  
                return;

             args = null;
        }
    }          
}



И запускаю глобальный процесс
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
if (glob_process_== null)
    glob_process = new Process();

glob_process.StartInfo.FileName = proc_name;
glob_process.StartInfo.Arguments = proc_args;
/* These two optional flags ensure that no DOS window appears */
glob_process.StartInfo.UseShellExecute = false;
glob_process.StartInfo.CreateNoWindow = true;
/* This ensures that you get the output from the DOS application */
glob_process.StartInfo.RedirectStandardOutput = true;

glob_process.Start();

char[] resp = new char[1024];

//don't wait till finish
glob_process.StandardOutput.Read(resp, 0, 1024);

return new string(resp);



Проблема в том что args = null; не помогает и args = Environment.GetCommandLineArgs(); читает в цикле одни и те же аргументы и бесконечно запускает команду переданную один раз.
Как решить проблему? Может есть какое нибудь более правильное решение проблемы?
...
Рейтинг: 0 / 0
22.09.2021, 13:44
    #40099277
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обратиться к процессу несколько раз
Код: c#
1.
glob_process.Start();


каждый раз запускает новый exe. в описании на старт написанно - Starts (or reuses) the process. как сделать именно reuse?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обратиться к процессу несколько раз / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]