Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 后台工作程序中的Run方法_C#_Winforms_Methods_Backgroundworker - Fatal编程技术网

C# 后台工作程序中的Run方法

C# 后台工作程序中的Run方法,c#,winforms,methods,backgroundworker,C#,Winforms,Methods,Backgroundworker,我想在windows窗体的后台工作程序中运行我的方法。 完成每个方法后,这些方法生成的输出将显示在标签中 我的背景知识很少。有人能指导我如何做到这一点吗。我累了,但它说线程无法访问表单中的控件 这是我的两个方法的代码,当用户单击按钮时,这两个方法将同时执行 private void program_green() { string stdOut = null; string stdError = null;

我想在windows窗体的后台工作程序中运行我的方法。 完成每个方法后,这些方法生成的输出将显示在标签中

我的背景知识很少。有人能指导我如何做到这一点吗。我累了,但它说线程无法访问表单中的控件

这是我的两个方法的代码,当用户单击按钮时,这两个方法将同时执行

 private void program_green()
        {
            string stdOut = null;
            string stdError = null;
            string address = "192.168.1.100";
            string user = "user";
            string pass = "password";
            SshExec ssh = new SshExec(address, user, pass);
            ssh.Connect();
            ssh.RunCommand("cfg_green " + green_textBox1.Text + " " + green_textBox2.Text + " " + green_textBox3.Text, ref stdOut, ref stdError);
            green_output.Text = stdOut;
            ssh.Close();

        }

        private void program_grey()
        {
            string stdOut = null;
            string stdError = null;
            string address = "192.168.1.100";
            string user = "user";
            string pass = "password";
            SshExec ssh = new SshExec(address, user, pass);
            ssh.Connect();
            ssh.RunCommand("cfg_grey " + grey_textBox1.Text + " " + grey_textBox2.Text + " " + grey_textBox3.Text, ref stdOut, ref stdError);
            grey_output.Text = stdOut;
            ssh.Close();
        }

任何支持都将不胜感激。

请查看以下链接-

在worker的
DoWork
事件中,只需调用这两个方法。如果您想单独跟踪和处理这两种方法,请准备两个后台工作人员


点击按钮,调用worker对象的
RunWorkerAsync
方法

这个链接有一个很好的例子
class BackgroundWork
{
    private Thread thread1;

    private Thread thread2;

    private void StartObserving() {

       thread1 = new Thread(this.program_green);

       thread1.Start();

       thread2 = new Thread(this.program_grey);

       thread2.Start();
    }


 }

通过UI(主)线程访问UI组件非常重要


添加一些描述以及代码绿色和灰色是上面代码中给出的两种方法问题是关于后台工作程序,一个winform组件。线程(如果不知道组件,听起来很难)是另一回事。
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    // background process by worker thread
}

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    // handled the event by UI thread.
}