質問: ocxからのコールバックを繰り返すとスタック領域が不足する こんにちは。 いつもお世話になっております。 ocxからのコールバックが繰り返された場合に「実行時エラー28 スタック領域が不足しています。」が発生して困っています。 以下のようにocxからのコールバックでプロシージャを再帰的に呼び出しています。 ------------------------------------------------------------------------------------- private sub command1_click() 'ontestイベントを発生させる test.test end sub ------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------- private sub test_ontest(byval sstatus as long, byval filename as string) select case sstatus case 0 'ステータスが0になったら終了 exit sub case else '再帰的にontestイベントを発生させる test.test end select end sub ------------------------------------------------------------------------------------- すると、294回目でスタック領域不足が発生します。 msdnによると「イベント連鎖」と呼ばれるものであるようですが、途中までうまくいくので何か他に原因がないかと思っています。 http://msdn2.microsoft.com/ja-jp/library/0ctsw64a.aspx 回避策などありましたらご教示下さい。 ちなみにocxの処理としては、フォルダ内の該当ファイル名を1つずつ返すというものです。 <環境> windows 2000, vb6.0
回答: イベントはマルチスレッドで動作するので、 これが「イベントの連鎖」として異常を起こしている、 と考えられます。 ですから、コード上でイベント実行中にイベントを起動しない、 という動きにするなどの対策が必要です。