Q1:「スレッドを強制終了させる」を呼び出していますが、スレッドが終了していない。
Q1-1:
スレッドアロケータを使用してスレッドを生成し、そこで処理をさせています。
アプリケーション終了時にスレッドを終了させようと思い、「スレッドを強制終了させる」を呼び出していますが、スレッドが終了していないようです。ビルダーで実行した場合、「不明なエラーが発生しました」と出ます。
再度実行すると、「スレッドを実行中です」とダイアログが出ます。
スレッド終了の手順をお教えください。スレッドのサンプルアプリをつけておりますので、間違いがあればそちらにもご指摘願えますでしょうか。
関連ファイル:スレッド.mzax
A1-1:
スレッドが終了しない点ですが、MZ Platformの問題点と、処理上の問題点とがございました。
(1)MZ Platformの問題点
スレッドアロケータのメソッド「スレッドを強制終了する」が機能しないことがわかりました。
内部で使用しているJavaのメソッド自身が実際には動作しない(実装されていない)ことがわかりました。従いまして、現状でスレッドを強制終了することができません。
今後改善を検討させていただきたいと存じます。
ご報告有難うございました。
(2)処理の問題点
お送りいただいた処理では、繰り返し制御(WHILE)コンポーネントのループが終了しません。
ループの続行/停止は、本コンポーネントの「処理要求イベント」に接続された処理の終了時の属性「Continued」の値の状態、または、同イベントの最終メソッドの論理値の戻り値により決まる仕様です(trueの場合続行、falseの場合停止)。
従いまして、処理要求イベントに定義された処理で、上記属性が常にtrueになりますため、このままでは停止いたしません。
また、Continued属性は1ループ終了時に毎回falseに初期化されますので、ループの続行・停止を制御するためには、別に変数を導入する必要がございます。
一つの解決策として、例えば、論理値(Boolean)格納変数を用いて、ループの続行・停止を指定できるようにし、その変数値を処理要求イベント内で上記属性に設定する方法が考えられます。また、適正にループが停止しますと、そのスレッドは自動的に終了するはずです。
以上、取り急ぎ回答させていただきます。
関連ファイル:スレッド_修正.mzax