C# 在后台工作程序中运行代码

C# 在后台工作程序中运行代码,c#,asp.net,multithreading,process,backgroundworker,C#,Asp.net,Multithreading,Process,Backgroundworker,我正在尝试使用asp.net。 我有一个很小的问题。 在我的一个按钮点击事件中,我有一项繁重的任务需要执行,这导致了问题。如何在后台工作程序中运行此代码。任何提示都将不胜感激,因为我还没有玩过这个背景工人 这是我的后台工作人员的代码 protected void green_button_Click(object sender, EventArgs e) { string stdOut = null; string stdErr

我正在尝试使用asp.net。 我有一个很小的问题。 在我的一个按钮点击事件中,我有一项繁重的任务需要执行,这导致了问题。如何在后台工作程序中运行此代码。任何提示都将不胜感激,因为我还没有玩过这个背景工人

这是我的后台工作人员的代码

  protected void green_button_Click(object sender, EventArgs e)
        {
            string stdOut = null;
            string stdError = null;

            string address = "192.168.1.88";
            string user = "user";


            string pass = "testuser";
            SshExec ssh = new SshExec(address, user, pass);
            green_output.Text = "Connecting...";
            green_output.Text = "Connected";
            ssh.Connect();
            ssh.RunCommand("cfg_green " + green_textbox1.Text + " " + green_textbox2.Text + " " + green_textbox3.Text, ref stdOut, ref stdError);
            green_output.Text = stdOut;
            //green_output.Text = stdError;
            ssh.Close();
            // green_output.Text = "Disconnect";
        } 

总的来说,你的问题有点太宽泛了。 不确定您指的是WinForms中可用的后台工作者类(标记表示您指的是asp.net 5)。你真的想使用这个类吗

但我建议您使用任务。看

您可以在那里创建和等待任务

   var result = await Task.Run(() => myBackgroundWork());
此外,如果您的背景代码支持异步(例如网络流量),您可以简单地等待它,并使您的代码不使用线程而异步

例如,见。
线程总是有成本的,您可能不想为此付费

总的来说,你的问题有点太宽泛了。 不确定您指的是WinForms中可用的后台工作者类(标记表示您指的是asp.net 5)。你真的想使用这个类吗

但我建议您使用任务。看

您可以在那里创建和等待任务

   var result = await Task.Run(() => myBackgroundWork());
此外,如果您的背景代码支持异步(例如网络流量),您可以简单地等待它,并使您的代码不使用线程而异步

例如,见。
线程总是有成本的,您可能不想为此付费

这段代码真的与asp.net相关吗?或者只是错误的标签?网页中的后台工作人员?也许,但浏览器将需要等待它完成…也许你应该描述你的根problem@Adriano雷佩蒂,我有两个按钮,我想两个都跑。目前只有一个可以执行它的Web应用程序,而不是桌面…后台工作程序是您在winforms中使用的,但ASP.net中的每个请求都是并行的。当然,它需要在客户端看到任何东西之前完成(除非您使用的是ajax)。你需要它的输出,那么你就不能使用“跑而忘”的策略。使用AJAX POST使该事件在客户端异步。@AdrianoRepetti,谢谢您提供的信息,您能为我提供一些示例代码来完成此任务吗?这些代码真的与asp.net相关吗?或者只是错误的标签?网页中的后台工作人员?也许,但浏览器将需要等待它完成…也许你应该描述你的根problem@Adriano雷佩蒂,我有两个按钮,我想两个都跑。目前只有一个可以执行它的Web应用程序,而不是桌面…后台工作程序是您在winforms中使用的,但ASP.net中的每个请求都是并行的。当然,它需要在客户端看到任何东西之前完成(除非您使用的是ajax)。你需要它的输出,那么你就不能使用“跑而忘”的策略。使用AJAX POST使该事件在客户端异步。@AdrianoRepetti,谢谢您提供的信息,您能为我提供一些示例代码来完成此任务吗。