c# - 在桌面应用程序的后台远程运行守护程序
问题描述
我想制作一个 GUI 来启动和停止远程 Linux 服务器上的脚本。我已经使用 SSH.NET 成功地通过 SSH 连接到远程服务器,并且可以成功运行脚本。但是,由于远程脚本还没有完成,整个程序就停止了。(这个脚本不应该完成,实际上是监控行为)。我希望能够通过按下一个按钮来停止脚本,该按钮将对该脚本进程执行停止命令。我想我可能需要使用“&”命令在桌面应用程序和 Linux 服务器上设置多个线程才能发生这种情况。
任何帮助将不胜感激!
下面的代码:
private void StartButton_Click(object sender, RoutedEventArgs e)
{
isPBXMonitoringEnabled = true;
using (SshClient ssh = new SshClient("server", "uname", "pw"))
{
ssh.Connect();
var cmd = ssh.CreateCommand("./phpScripts/script.php");
var asynch = cmd.BeginExecute();
var reader = new StreamReader(cmd.OutputStream);
while (!asynch.IsCompleted) ///This wont complete... I need to find a way to allow this to go on but take in a command to stop it when i need to.
{
var result = reader.ReadLine();
if (string.IsNullOrEmpty(result))
continue;
Console.Write(result);
}
cmd.EndExecute(asynch);
ssh.Disconnect();
}
}
解决方案
听起来你知道答案。一旦应用程序启动了远程进程,您需要另一个线程来发送退出命令。
推荐阅读
- javascript - Jest Spy 说函数没有被调用
- javascript - 如何将 textinput 光标的初始位置设置为左上角
- python - 通过 Hough 变换检测框
- javascript - 通过 JavaScript 更新类时 nth-child 选择器未正确应用
- c - 对库中包含的函数的未定义引用
- ruby-on-rails - 在谷歌云上运行的 Rails 5 应用程序通过套接字运行到谷歌云 SQL 实例的 ConnectionBad 问题
- ios - SwiftUI 中的自定义模态转换
- c# - 如何制作“全局”wpf 应用程序热键
- amazon-web-services - AWS Cognito Identity 用户 ID 或用户池用户 ID?使用哪个?
- java - 暂停代码,直到用户在对话框提示上输入数据