есть неск потоков рисовальщиков,кот работают со след функцией:
| Код | while (Position != newPosition) {
curPos.X += changeX; curPos.Y += changeY; lock (this) { Position = curPos; }
Draw();
Thread.Sleep(100);
|
где Draw:
| Код | lock (graph) { graph.DrawImage(bitmap, Position); } Interlocked.Increment(ref readyThreads); while (readyThreads != 0) { Thread.Sleep(20); }
|
и есть поток,кот должен после каждого прохода функций рисовальщиков обновляьт форму:
| Код | while (true) { if (readyThreads == -1) return; if (readyThreads == totalThreads) { form.BeginInvoke(refresh);//resresh - делегат на Form.Resresh() Interlocked.Exchange(ref readyThreads ,0); } Thread.Sleep(10); }
|
так вот форма перерисовывается только при окончании работы рисовательных потоков,а не после каждого прохода!(хотя коли уж рисовальщики рисуют дальше,значит form.BeginInvoke(refresh) и Interlocked.Exchange(ref readyThreads ,0) точно вызывались....)разве Form.Refresh() не должен сразу обновить всю форму? |