[C#] Zatrzymanie algorytmu na czas zakończenia zdarzenia

0

Mam sobie algorytm który coś tam liczy, robi itp.
Jak w miejscu "blokada" zatrzymać działanie funkcji, aż do wystąpienia i zakończenia zdarzenia:

private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{

}
 
public void p()
{
            licze
            licze
            robie
            itp
            blokada
            licze
            licze
            robie
            itp
}

próbowałem z

while(!blokada)
{
            Thread.Sleep(300);
            Application.DoEvents();
}
 

ale to nie spełnia swojej funkcji

0

0

Nie znalazłem tam odpowiedzi. Przepraszam, że zmarnowałem twój czas.

0

To był trochę żart, a tak na serio to nie rozumiem Twojego problemu. Co Ty dokładnie chcesz osiągnąć?

0

Użyj ManualResetEvent. W momencie blokada używasz Set(), w zdarzeniu tam gdzie ma czekać używać WaitOne().

0

Żeby zrobić to na jednym wątku(bo z kodu jaki wrzuciłeś wnioskuję, że nie jest to aplikacja wielowątkowa) możesz dodać timer i twoje operacje "licze", "robie" itd. wykonywać w ticku timera sprawdzając za każdym razem flagę wciśnięcia przycisku myszy, którą ustawiałbyś w momencie kliknięcia, a kasował na koniec obsługi eventu. Ale nie gwarantuję, że to będzie działać tak jak chcesz.
Lepiej obliczenia umieścić w drugim wątku i użyć zwykłego lock.

1 użytkowników online, w tym zalogowanych: 0, gości: 1