我需要一个小的帮助与我的应用程序。当我按下按钮的应用程序冻结,直到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);
}