CDirScan 関数 NextL は、SetScanDataL() がすぐに呼び出されない場合 (つまり、同じアクティブ オブジェクト内で別のイベントの後で呼び出された場合)、「Main Panic KERN-EXEC 0」を発生させます。
f1() - アクティブなオブジェクト内で呼び出されます
iDirScan = CDirScan::NewLC(aFs);
iDirScan->SetScanDataL(aPath,
KEntryAttDir|KEntryAttMatchExclusive,
ESortNone, CDirScan::EScanDownTree);
//wait for some asynchronous event
f2() - 非同期イベントの後、同じアクティブ オブジェクト内で呼び出されます
CDir* dir = NULL;
TRAPD(error, iDirScan->NextL(dir)); -->> "Main Panic KERN-EXEC 0"
何らかの非同期イベントを待機する前に iDirScan->NextL() が呼び出された場合、すべて正常に動作します。
CDirScan 変数が有効性を失うのはなぜですか? 非同期イベントには何も関係がないことに注意してください。単純なダミー タイマーである可能性があります。