gpt4 book ai didi

c++ - 在 Windows Metro 中以编程方式从网格中删除对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:18:09 25 4
gpt4 key购买 nike

我有几个图像在 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 层次结构中删除一个对象

在 iOS 世界中可以用单个来完成的事情:[object removeFromSuperView];

最佳答案

在我声明的类头中

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 函数的局部变量。

关于c++ - 在 Windows Metro 中以编程方式从网格中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18536638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com