Rysowanie na bitmapie

0

Na formie mam kilka komponentów. W klasie znajduje się metoda wykonująca jakiś tam algorytm i wywołująca kolejną metodę która ma za zadanie rysowanie czegoś na bitmapie. Mniej więcej tak to wygląda:

private void metoda1()
{

 Bitmap bmp = new Bitmap(PBox.Width, PBox.Height);
 for(int i = 0; i < 1000; i++)
  {
    //instrukcje do algorytmu

    metodaRysuj(bmp);
 }
}

private void metodaRysuj(Bitmap bmp)
{
 Graphics g = Graphics.FromImage(bmp);

 for(int i = 0; i < 100; i++)
 {
  //instrukcje ktore obliczaja pozycje elipsy i takie tam
  g.FillEllipse(new SolidBrush(Color.Blue), x, y, z , r);
 }
 //Thread.Sleep(20);
 PBox.Image = bmp;
}

Metody są wykonywane w wątkach więc wszystko widać na formie jak się zmienia. Gdy Threed.Sleep(20) jest odkomentowane działa poprawnie jednak gdy nie usypiam tego wątku na te 20 milisekund pojawia się problem. Przy PBox.Image = bmp. PBox to jest PictureBox umieszczony na głównej formie.

Object is currently in use elsewhere.
Troubleshooting tips:

If you are using the Graphics object after the GetHDC method, call the ReleaseHDC method.

Jakiś pomysł co można na to poradzić. Paru rzeczy już próbowałem i nie bardzo wychodzi.

Aha jeszcze jedno metoda1 to jest oddzielny wątek, który wywołuje metodaRysuj.

0

Poczytaj o synchronizacji.

0

Już nie ważne, poradziłem sobie za pomocą delegacji. Temat do usunięcia.

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