小编use*_*515的帖子

在c#中,我还可以在新线程中使用Windows.Forms.Timers吗?

我正在尝试创造一个大炮射击射弹的游戏.我想保持滞后,所以我想这样做,以便每次创建一个抛射物时,它都是在一个新的线程中创建的.为此,我使用了以下代码:

Image cubeImage= Image.FromFile("C:\\Users\\Stefan\\Documents\\Visual Studio 2010\\Projects\\Game1\\Game1\\Resources\\CannonCube.png");
PictureBox cannonCube = new PictureBox();
ScreenPanel.Controls.Add(cannonCube);
cannonCube.Image = cubeImage;
cannonCube.SetBounds(cannonCubeInst.X, cannonCubeInst.Y, cubeImage.Width, cubeImage.Height);
cannonCube.BringToFront();
ParameterizedThreadStart pthread = new ParameterizedThreadStart(createShot);
Thread thread = new Thread(pthread);
thread.Start();
cps.Add(cannonCube);
Run Code Online (Sandbox Code Playgroud)

在我尝试在线程中创建对象之前,对象已创建并正常工作.现在,在使用线程之后,它们被创建,但它们不会移动,所以我怀疑我用来计算运动时间的System.Windows.Forms.Timer对象已停止运行.

这是否意味着我不能在我的theads中使用计时器?

我没有将计时器声明为静态变量,我在构造函数中声明它们:

public CubeProjectile(PictureBox box1, int u, int angle, List<PictureBox> walls)
{
System.Windows.Forms.Timer update;
System.Windows.Forms.Timer wallCheck;
wallList = walls;
u = u / 6;
horizontalSpeed = u * (Math.Cos(angle * (Math.PI / 180)));
verticalSpeed = u * (Math.Sin(angle * (Math.PI / 180)));
box = box1;
update = …
Run Code Online (Sandbox Code Playgroud)

c# multithreading timer

2
推荐指数
1
解决办法
183
查看次数

标签 统计

c# ×1

multithreading ×1

timer ×1