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.