我之前制作了一个简单的球和桨程序,所有程序都以一种形式运行。现在我试图让球在单独的线程上运行,但在概念上不太了解如何让球在单独的线程上运行,同时保持我的程序的其余部分相同。
最初计时器会让球移动,所以我想我可以将移动线插入到我的 ballUpdate 类中。但现在我的问题是是否有办法让线程工作我当前的计时器实现。
这就是我的 form1 的样子
public partial class Form1 : Form
{
Graphics paper;
Paddle paddle = new Paddle();
Ball ball = new Ball();
Thread myThread;
BallUpdate ballUpdate = new BallUpdate();
public Form1()
{
InitializeComponent();
myThread = new Thread(() => ballUpdate.ballMotion(ball));
myThread.Start();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
paper = e.Graphics;
paddle.drawPaddle(paper);
ball.drawBall(paper);
}
private void timer1_Tick(object sender, EventArgs e)
{
//ball.moveBall();
ball.collide();
ball.hitPaddle(paddle.PaddleRec);
this.Invalidate();
}
我认为这可能会有所进展,但球根本不动。
class BallUpdate
{
public BallUpdate(){}
public void ballMotion(Ball x)
{
while(true)
{
x.moveBall();
Thread.Sleep(30);
}
}
}