xawer napisał(a)
Czy jest moze sposob aby zatrzymac wykonywanie kodu zrodlowego przez jakis okres czasu, dajac rownoczescie mozliwosc wykonania jakiejs innej czynnosci?
Tak, już napisaliśmy o tym :) Byłoby łatwiej pomóc, gdybyś dał jakiś kawałek kodu ;]
Bo z tego, co zrozumiałem, to można zrobić tak (mamy formatkę z jednym przyciskiem i jednym BackgrounWorkerem):
bool graczZdążył = false;
public Form1()
{
InitializeComponent();
this.button1.Text = "Wciśnij mnie!";
this.backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Thread.Sleep(3000);
if (!this.graczZdążył)
{
this.UstawTekstPrzycisku("Za późno!");
this.UstawEnablePrzycisku(false);
}
}
private void button1_Click(object sender, EventArgs e)
{
this.graczZdążył = true;
MessageBox.Show("Zdążyłeś!");
}
delegate void UstawTekstCallback(string text);
private void UstawTekstPrzycisku(string tekst)
{
if (this.button1.InvokeRequired)
{
UstawTekstCallback d = new UstawTekstCallback(UstawTekstPrzycisku);
this.Invoke(d, new object[] { tekst });
}
else
{
this.button1.Text = tekst;
}
}
delegate void UstawEnableCallback(bool enable);
private void UstawEnablePrzycisku(bool enable)
{
if (this.button1.InvokeRequired)
{
UstawEnableCallback d = new UstawEnableCallback(UstawEnablePrzycisku);
this.Invoke(d, new object[] { enable });
}
else
{
this.button1.Enabled = enable;
}
}
Program startuje i masz 3 sekundy na wciśnięcie przycisku, jeśli tego nie zrobisz, to przycisk się wyłączy. O takie coś chodzi?