4

コンテナ内でアニメーション化されているいくつかの画像があり、メモリを節約するためにアニメーションが終了しGridた後にそれらを削除する必要があります。Grid

storyboard->Completed += ref new EventHandler<Object^> 
   ([this,birthImage,&index](Object^ sender, Object^ e) {
        mainGrid->Children->IndexOf (myImage,  &index);
        mainGrid->Children->RemoveAt  (index);
    });

残念ながら、この方法は C# でのみ使用でき、C++/CX では使用できないため、この提案に従って使用することはできません。mainGrid->Chilren->Remove(myImage)

強制的に使用するIndexOfと、RemoveAt同時実行の問題が発生します。

C++/CX でビュー階層からオブジェクトを削除するソリューションが必要です

iOS の世界ではシングルでできること: [object removeFromSuperView];

4

1 に答える 1

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

于 2013-08-30T20:55:11.883 に答える