mycode:
Canvas myCanvas = new Canvas();
> Rectangle myRectangle = new Rectangle();
> Task.Factory.StartNew(() =>
> {
> while(true)
> {
> myCanvas.Children.Clear();
> //do something
> for(int i=1;i<=100;i++)
> {
> myCanvas.Children.Add(myRectangle[i]);
> }
}
> }).ContinueWith(t =>
> {
>
> }, System.Threading.CancellationToken.None, TaskContinuationOptions.None,
> TaskScheduler.FromCurrentSynchronizationContext());
我仍然遇到错误:“指定的Visual已经是另一个Visual的子项或CompositionTarget的根。”我应该怎么做?
答案 0 :(得分:1)
您可能希望使用 Dispatcher.Invoke 方法。
while (true)
{
Dispatcher.Invoke(new Action(() => { myCanvas.Children.Clear(); }));
for (int i = 1; i <= 100; i++)
{
Dispatcher.Invoke(new Action(() => { myCanvas.Children.Add(myRectangle[i]); }));
}
}
请注意, Invoke 会阻止调用线程。