启动和暂停线程?

时间:2013-02-24 21:31:35

标签: c# multithreading winforms events button

我需要使用线程来暂停/恢复射弹运动。在button3_Click事件中,射弹运动在屏幕上绘制:

public void button3_Click(object sender, EventArgs e)
{
//... Lots of drawingcode...
}

我需要使用相同的button3_Click暂停/恢复射弹动作,但我是线程新手,无法弄清楚如何。

我试过了:

        public partial class Simulation : Form
{
            Thread parallel1;
            Thread parallel2;

            public Simulation()
            {
                InitializeComponent();
                parallel1 = new Thread(new ThreadStart(button3_Click));
            }
}

但是我收到了错误......

No overload for 'button3_Click' matches delegate 'System.Threading.ThreadStart'

我认为我需要两个线程,因此当一个线程暂停时,另一个线程正在运行以获取button3_Click并恢复另一个线程。怎么办呢?

1 个答案:

答案 0 :(得分:1)

关于方法签名。在c#方法中,它们的参数和名称是唯一的。所以这个错误告诉你没有任何参数调用没有方法。你可以使用

new Thread( new ParameterizedThreadStart(...

您可以发送参数。发件人通常是您的按钮,您可以为EventArgs参数发送“new EventArgs()”。

但最好的方法(我使用它)不会在按钮点击中编写任何复杂的代码。用不同的方法编写复杂的代码,然后在按钮单击下调用它。通常操作不止一次使用,因此您可以从任何地方调用您的方法,而不会发生任何变化。 编写一种新方法来进行操作。如果您的方法中需要任何参数,可以使用parameterizedThreadStart调用它。 注意:如果你得到任何类似这样的错误,一个或多个线程访问一个对象,你可以在线程启动之前设置这个属性

  

CheckForIllegalThreadStart=false;