我需要使用线程来暂停/恢复射弹运动。在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
并恢复另一个线程。怎么办呢?
答案 0 :(得分:1)
关于方法签名。在c#方法中,它们的参数和名称是唯一的。所以这个错误告诉你没有任何参数调用没有方法。你可以使用
new Thread( new ParameterizedThreadStart(...
您可以发送参数。发件人通常是您的按钮,您可以为EventArgs参数发送“new EventArgs()”。
但最好的方法(我使用它)不会在按钮点击中编写任何复杂的代码。用不同的方法编写复杂的代码,然后在按钮单击下调用它。通常操作不止一次使用,因此您可以从任何地方调用您的方法,而不会发生任何变化。 编写一种新方法来进行操作。如果您的方法中需要任何参数,可以使用parameterizedThreadStart调用它。 注意:如果你得到任何类似这样的错误,一个或多个线程访问一个对象,你可以在线程启动之前设置这个属性
CheckForIllegalThreadStart=false;