我在Grid
容器内动画了几个图像,我需要在动画结束后从Grid
中删除它们以节省内存。
storyboard->Completed += ref new EventHandler<Object^>
([this,birthImage,&index](Object^ sender, Object^ e) {
mainGrid->Children->IndexOf (myImage, &index);
mainGrid->Children->RemoveAt (index);
});
很遗憾,我无法关注this suggestion并使用mainGrid->Chilren->Remove(myImage)
,因为此方法仅适用于C#而不适用于C ++ / CX
被迫使用IndexOf
然后RemoveAt
会导致并发问题。
我需要一个解决方案来从C ++ / CX中的View Hierarchy中删除一个对象
iOS世界中可以使用单个内容完成:[object removeFromSuperView];
答案 0 :(得分:1)
在我已声明的类标题中
private:
concurrency::reader_writer_lock myLock;
并将实施更改为:
storyboard->Completed += ref new EventHandler<Object^>
([this,birthImage](Object^ sender, Object^ e) {
unsigned int index;
myLock.lock();
if (mainGrid->Children->IndexOf (myImage, &index))
{
mainGrid->Children->RemoveAt (index);
}
myLock.unlock();
});
注意unsigned int index
声明为lambda
函数的局部变量。