同时运行更多功能

时间:2015-04-03 05:35:58

标签: c# multithreading

我想同时运行一个函数或同时运行函数A和B,具体取决于是否复选了相应的复选框c_Ac_B。我还想通过按住停止按钮来停止所有(一个或两个)运行功能。我试过以下代码。当只有一个chceck盒被chcecked时,它就会吵架。当两个chceckbox都被chcecked时,只有函数A运行。按下停止按钮时,运行功能不会停止。

private void Start_Click(object sender, EventArgs e)
        {       
       ThreadStart ts_A = delegate()
                {
                };
                if (c_A.Checked)
                {
                    t_A = new Thread(ts_A);
                    t_A.Start();
                    function_A();
                }

                   ThreadStart ts_B = delegate()
                {
                };
                if (c_B.Checked)
                {
                    t_B = new Thread(ts_B);
                    t_B.Start();
                    function_B();
                }
         }

       private void Stop_Click(object sender, EventArgs e)
       {
           t_A.Abort();
           t_B.Abort();
        }

1 个答案:

答案 0 :(得分:1)

你根本没有在Thread中调用你的方法。你实际上是在线程之外调用它。

为了在线程中调用它,该方法应该在ThreadStart中传递。

ThreadStart ts_A = new ThreadStart(function_A);

然后调用t_A.Start将在一个线程中运行function_A。您可以在此处找到有关ThreadStart的更多信息https://msdn.microsoft.com/en-us/library/system.threading.threadstart%28v=vs.110%29.aspx

话虽如此,你的方法应该是这样的。

private void Start_Click(object sender, EventArgs e)
    {       
   ThreadStart ts_A = new ThreadStart(function_A);
            if (c_A.Checked)
            {
                t_A = new Thread(ts_A);
                t_A.Start();

            }

               ThreadStart ts_B = new ThreadStart(function_B);
            if (c_B.Checked)
            {
                t_B = new Thread(ts_B);
                t_B.Start();

            }
     }