Xojoをどうぞ

ようこそxojoへ / 3

5 コメント
views
0 フォロー
3
ひろやん 2024/09/12 (木) 13:59:20

XojoのThreadクラスを知っていますか?

Threadクラスと聞いても、何の事かも判らないし、得体の知れない物と思われているかも判りませんが、
簡単な例を上げてみると:
通常のプログラムは
 1)ユーザから何かの入力を受けて、加工を施してから画面に表示します。
また
 2)ファイルやネットワークからデータを読み込んで、加工して画面に表示したり、
   別のファイルに書き出したりします。

この様な場合に、加工すべきデータが数十〜数百の程度だと現状のパソコンでも、
処理内容にも拠りますがほぼ数秒以内に結果が得られます。

しかし

加工すべき元データが数万〜数千万の単位になると、数分もしくは数時間掛かるかも知れません。
その作業時間にユーザからのアクションである各種イベントが処理されなくなると、どうなるでしょうか?
  ・プログラムが暴走orハングアップしたのか?
  ・何か間違った捜査をしてしまったのでは無いか?
  ・指定すべきデータを間違ったのでやり直したい!
等と言う状況になるかも…

そのような場合に役立つのが、Threadクラスや別途説明するWorkerクラスです。
(今回はThreadクラスの説明ですので、Workerクラスは別の機会にします)

加工処理に時間がかかる場合、ユーザに状況を把握してもらうため
 ・ダイアログウィンドウ等を表示して、全データ件数の内の何件目を処理しているのかを表示する。
 ・ユーザからの途中での停止、中断等のアクションを受けて、適切な対応をする。
みたいな動作をする事が望ましいと考えられます。

そこで、アプリケーションの本来の流れはダイアログウィンドウを表示し、データ加工の進行状況を
更新しつつ、イベントを適切に処理しておく事で、ユーザはいつでもアプリケーションを安心して
使用できます。

本来の流れとは別に(Threadクラスを用いて)データ加工を順次行う事で、プログラムの流れを分離して
簡潔な構成にして、作成が容易になり、バグの発生も軽減できる事が期待できます。

但し、Threadの処理内ではThread SafeなAPIしか呼び出す事が出来ません。
具体的には画面への表示更新などはThread Safeでは無いので、呼び出す事は出来ません。
ご注意ください。

通報 ...