Som sagt, fryser programmet fordi det ikke "pumper" de beskeder som Windows sender.
Application.DoEvents() bearbejder alle beskeder.
Her er et eksempel. Første knap starter loopet, og når den anden knap trykkes ned, så afspiller loop'et et beep.
bool DoBeep = false;
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
button2.Enabled = true;
while (true) //Loop uendeligt
{
if (DoBeep) //Skal der beep'es?
{
DoBeep = false; //Ellers vil vi beep'e i al evighed (amen)
Console.Beep(1200, 100); //Beep
}
//Pump Windows beskeder
Application.DoEvents();
}
}
private void button2_Click(object sender, EventArgs e)
{
//Fortæl loopet at vi gerne vil beep'e
DoBeep = true;
}
private void Form1_Load(object sender, EventArgs e)
{
button2.Enabled = false;
}
Alternativt kan du også benytte en tråd.
Indlæg senest redigeret d. 14.02.2010 10:37 af Bruger #1927