【发布时间】:2020-06-22 13:26:50
【问题描述】:
我尝试了以下代码在 Task.Run 中执行命令。
SshClient ssh;
public Form1()
{
InitializeComponent();
//BackGround Login is needed.
ConnectionInfo info = new ConnectionInfo(hostNameOrIpAddr, portNo, userName,
new AuthenticationMethod[] {
new PasswordAuthenticationMethod(userName, passWord)
ssh = new SshClient(info);
ssh.Connect();
cmd = ssh.CreateCommand(commandString);
}
private void button1_Click(object sender, EventArgs e)
{
Task.Run(()=>{
SshCommand cmd = ssh.CreateCommand(commandString);
cmd.Execute();
Console.WriteLine(cmd.Result.ToString());
;});
}
但是效果不好。 原因可能是在启动任务后立即 Dispose 流。
【问题讨论】:
-
嘿@yur,欢迎来到 StackOverflow。请格式化您的代码以提高可读性,这反过来会提高有人回答您的问题的机会:) 另外请更具体地说明“......它不能很好地工作”。您期望发生什么以及正在发生什么?
-
您想要异步接收来捕获数据。请参阅以下内容:stackoverflow.com/questions/48808074/…
-
您的代码无法编译
-
我敢打赌,您的服务器可能需要某种关于按键或其他东西的验证码,并且它会阻止自动连接正常完成。因此,您可能必须首先以 shell 流的形式与其交互,然后发送您的命令。
标签: c# multithreading ssh task