c# SSH命令执行



我需要一个小的帮助与我的应用程序。当我按下按钮的应用程序冻结,直到ssh完成命令被发送。我尝试了c#应用程序冻结的解决方案,但当我试图使用Task.Factory.StartNew(()...时,我在控制台上没有输出。这是我的代码:

var cmd = SSH.CreateCommand("apt update && apt upgrade -y");
var asynch = cmd.BeginExecute();
var reader = new StreamReader(cmd.OutputStream);
while (!asynch.IsCompleted)
{
var result = reader.ReadToEnd();
if (string.IsNullOrEmpty(result))
continue;
Console.Write(result);
}
cmd.EndExecute(asynch); 

有人和这件事有关吗?

你可能用while循环阻塞了你的GUI线程。

你需要异步运行你的代码。

public static void Main(String[] args)
{
Task sshTask = RunCommand();
}

public static async Task RunCommand()
{
var cmd = SSH.CreateCommand("apt update && apt upgrade -y");
var asynch = cmd.BeginExecute();
var reader = new StreamReader(cmd.OutputStream);
while (!asynch.IsCompleted)
{
var result = reader.ReadToEnd();
if (string.IsNullOrEmpty(result))
continue;
Console.Write(result);
}
cmd.EndExecute(asynch);
}

相关内容

  • 没有找到相关文章

最新更新