Mi a hiba a kódban? (c#)
Gőzöm nincs a szálkezeléshezez is csak egy gyenge próbálkozás, de nem jó.
Ez a kód:
public partial class Form1 : Form
{
private Keys m_keys;
public Thread t1;
public Thread t2;
public Form1()
{
InitializeComponent();
timer1.Interval = 1;
timer1.Enabled = true;
timer1.Start();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
m_keys = e.KeyCode;
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
m_keys = Keys.U;
}
public void ThreadFunction2()
{
try
{
MethodInvoker mi2 = new MethodInvoker(mozgas);
BeginInvoke(mi2);
}
catch
{
}
}
public void ThreadFunction()
{
try
{
MethodInvoker mi = new MethodInvoker(ugras);
BeginInvoke(mi);
}
catch
{
}
}
public void ugras()
{
if (m_keys == Keys.Up)
{
m_keys = Keys.U;
for (int i = 0; i < 50; i++)
{
pictureBox1.Location = new Point(pictureBox1.Location.X, pictureBox1.Location.Y - 5);
if (m_keys == Keys.Right)
{
pictureBox1.Location = new Point(pictureBox1.Location.X + 10, pictureBox1.Location.Y);
}
Thread.Sleep(2);
}
for (int i = 0; i < 50; i++)
{
pictureBox1.Location = new Point(pictureBox1.Location.X, pictureBox1.Location.Y + 5);
if (m_keys == Keys.Right)
{
pictureBox1.Location = new Point(pictureBox1.Location.X + 10, pictureBox1.Location.Y);
}
Thread.Sleep(2);
}
}
}
public void mozgas()
{
if (m_keys == Keys.Left)
{
pictureBox1.Location = new Point(pictureBox1.Location.X - 10, pictureBox1.Location.Y);
}
if (m_keys == Keys.Right)
{
pictureBox1.Location = new Point(pictureBox1.Location.X + 10, pictureBox1.Location.Y);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
t2 = new Thread(new ThreadStart(ThreadFunction));
t2.IsBackground = true;
t2.Start();
t1 = new Thread(new ThreadStart(ThreadFunction2));
t1.IsBackground = true;
t1.Start();
}
Csak egy picturebox mozgatása jobbra balra egyik szálon ill. msásik szálon az "ugrás". De ugrás közbe mégse tudd jobbra vagy balra menni. Mit rontottam el a kódban?
Először is fogalmazd meg pontosan, mit is akarsz elérni.
Most ugye az történik, hogy a timer minden egyes tick-jére elinditasz két új szálat. Ez úgy hülyeség, ahogy van.
Ha jól értelmezem, azt akarod elérni, hogy a nyilakkal mozgasd a picturebox-ot. Ehhez minek kellenek egyáltalán szálak?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!