При использовании Diagnostics.Process блокируется пользовательский интерфейс в WinForms C# 5.0.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 При использовании Diagnostics.Process блокируется пользовательский интерфейс в WinForms C# 5.0.

Сообщение Anonymous »

Мне нужно создать приложение, которое запускает различные команды (PowerShell.exe, ipconfig и т. д.), но при вызове ExecuteCommand пользовательский интерфейс зависает до завершения работы.
Пытался запустите метод, используя await proc.StandardOutput.ReadToEndAsync(), но он не работает. (зависает на указанной строке и не продолжается на следующей строке)
Что я делаю не так?
Заранее спасибо.
ExecuteCommand:
public static async Task ExecuteCommand(string command)
{
try
{
System.Diagnostics.Process proc = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.RedirectStandardInput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;

proc.StartInfo = procStartInfo;
proc.Start();

proc.WaitForExit();
var message = proc.StandardOutput.ReadToEndAsync();

//var error = await proc.StandardError.ReadToEndAsync();

proc.Close();

//var errorContent = error;
return message.Result;
}
catch (Exception objException)
{
return objException.Message;
}
}

Регистратор:
public void Logger(string value)
{
logtxt.AppendText("[" + DateTime.Now + "]: " + value + Environment.NewLine);
logtxt.SelectionStart = logtxt.Text.Length;
logtxt.ScrollToCaret();
}

Активен:
private async Task IsActive()
{
string text = await ExecuteCommand("PowerShell.exe -Command \"Get-VPNconnection -AllUserConnection\"");

Logger(text);

...more code...
}

Form1_Shown (я переместил приведенный ниже код из Form_Load, поскольку до появления пользовательского интерфейса требуется время):
private void Form1_Shown(object sender, EventArgs e)
{
if (IsActive().Result)
{
...more code...
}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... -sharp-5-0
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • При использовании Diagnostics.Process блокируется пользовательский интерфейс в WinForms C# 5.0.
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Process Process Process с более низким использованием процессора
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Process Process Process с более низким использованием процессора
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • C# получает интерфейс EnvDTE.DTE решения Visual Studio через экземпляр System.Diagnostics.Process
    Anonymous » » в форуме C#
    0 Ответы
    56 Просмотры
    Последнее сообщение Anonymous
  • Вызов `pod install` из System.Diagnostics.Process
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

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