Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Обратиться к процессу несколько раз  [new]
jenya7
Member

Откуда:
Сообщений: 1428
Раньше я запускал процес на одноразовое исполнение
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;
    }
}


Теперь мне надо обратиться к одному процессу несколько раз.
Для этого сам запускаемый процес я запускаю в цикле
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;
        }
    }          
}


И запускаю глобальный процесс
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(); читает в цикле одни и те же аргументы и бесконечно запускает команду переданную один раз.
Как решить проблему? Может есть какое нибудь более правильное решение проблемы?

Сообщение было отредактировано: 22 сен 21, 10:28
22 сен 21, 10:38    [22374475]     Ответить | Цитировать Сообщить модератору
 Re: Обратиться к процессу несколько раз  [new]
jenya7
Member

Откуда:
Сообщений: 1428
glob_process.Start();

каждый раз запускает новый exe. в описании на старт написанно - Starts (or reuses) the process. как сделать именно reuse?
22 сен 21, 13:44    [22374576]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить