2017-12-22 12 views
1

C++ Builder 10.2 Tokyo(およびそれ以前のバージョン)では、FMX.Types.TFmxObject.Release()メソッドは推奨されていません。廃止されたリリース機能の置き換え

私は、このメソッドをいくつかのTFormオブジェクトの遅延破壊に使用します。私が見つけることができるのは(these docsを参照)、(C++では)deleteを代わりに使用する必要がありますが、これは遅延破棄のためのフォームであるとは思いません。

Release()の代わりに、この場合に使用する必要があるものはありますか?

答えて

2

エンバカデロがRelease()を推奨していませんか、彼らはそれがと交換する予定のものを、なぜ私にはわからないが、あなたはTThread::ForceQueue()deleteからTFormオブジェクトを使用して試みることができる、例えば:あなたがしている場合、

void __fastcall TMyForm::ReleaseMe() 
{ 
    // Release() 
    TThread::ForceQueue(NULL, &DeleteMe); 
} 

void __fastcall TMyForm::DeleteMe() 
{ 
    delete this; 
} 

かクランベースのコンパイラを使用して、あなたの代わりにC++ 11のラムダを使用することができます:エンバカデロはまだのような標準の交換を持っていないようですので、私はこのソリューションを受け入れるだろう

void __fastcall TMyForm::ReleaseMe() 
{ 
    // Release() 
    TThread::ForceQueue(nullptr, [this](){ delete this; }); 
} 
+0

を、そしてその戦略のようなこれは適切な戦略です。彼らは交換をもたらすまで。当面は、単にReleaseコールを残しておきます。将来のリリースでサポートされなくなり、代替機能がない場合は、おそらくこのソリューションを実装します。 –

関連する問題