在Background Worker中运行代码

时间:2015-06-25 05:50:21

标签: c# asp.net multithreading process backgroundworker

我正在尝试使用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";
        } 

1 个答案:

答案 0 :(得分:0)

一般来说,你的问题有点广泛。 不确定你的意思是在WinForms中可用的后台工作者类(你的标签表示你的意思是asp.net 5)。你真的想要使用这个类吗?

但我会建议你使用任务。见MSDN Task Parallel Library

在那里你可以创建并等待任务。

   var result = await Task.Run(() => myBackgroundWork());

此外,如果您的后台代码支持异步(例如网络流量),您可以简单地等待它并使您的代码不同步而不使用线程。

参见例如Doing Work without threads。 线程总是需要付出代价,你可能不想付钱。