你可以用
asynch.AsyncWaitHandle.WaitOne();
而不是明确的
while
循环以实现相同的行为。
或者,你可以把它变成一个值得期待的话题
Task
具有
Task.Factory.FromAsync
.
您的代码如下所示:
using System;
using Renci.SshNet;
using System.Threading;
namespace SSHTest
{
class Program
{
static async Task Main(string[] args)
{
//Connection information
string user = "xx";
string pass = "xx";
string host = "uxx.ac.uk";
using (var client = new SshClient(host, user, pass))
{
client.Connect();
var cmd = client.CreateCommand("echo 123");
var result = await Task<string>.Factory.FromAsync(
cmd.BeginExecute,
cmd.EndExecute
);
Console.WriteLine(result);
client.Disconnect();
}
}
}
}
我个人会创建一个扩展方法来进行这种转换,并使用它,因为async/await是当今C#中异步编程的标准方法。
幸运的是已经有了一个
nuget package
这就是你想要的。