В .NET4.0 WPF я хочу отобразить DrawingPath на холсте, используя фоновый поток. Следующий ConsumerJob правильно работает в фоновом режиме и опрашивает очередь точек для рисования. Я использую Dispatcher, чтобы изменить холст в главном потоке, и он корректно отображается. Тем не менее, я ожидаю, что этот код будет отображать каждый сегмент по одному, когда и когда будет вызван каждый children.add (как анимация). Что происходит, так это то, что весь экран отображается сразу, а не по одному сегменту за раз. Как мне изменить код для отображения на экране, когда дети добавляются по одному за раз?
public void ConsumerJob()
{
while (true)
{
PointsD pt = (PointsD)queue.Consume();
displayQueue.Enqueue(pt);
pt = Scale(pt);
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
(ThreadStart)delegate()
{
Path drawingPath = new Path();
StreamGeometry streamingGeometry = new StreamGeometry();
drawingPath.Stroke = Brushes.Black;
drawingPath.StrokeThickness = 0.5;
using (StreamGeometryContext ctx = streamingGeometry.Open())
{
ctx.BeginFigure(new Point(pt.x0, pt.y0), false, false);
ctx.LineTo(new Point(pt.x1, pt.y1), true, false);
}
streamingGeometry.Freeze();
drawingPath.Data = streamingGeometry;
this.Children.Add(drawingPath);
}
);
}