3

データ処理を行うために OmniWorker-Task を作成しています。
これまでのところ、タスクは他のタスクとの間でメッセージを送受信できます。

次に、このタスクのメイン関数を実装する必要があります。この関数は継続的に実行され、データ処理を行いますが、メッセージはその動作を変更します。

しかし、このメイン関数をどこに置くのでしょうか?
実装する必要がある OmniWorker の「実行」メソッドのようなものはありますか?

4

1 に答える 1

6

実際、TOmniWorker は「モノリシック実行ブロック + メッセージング」イディオムを実際にはサポートしていません。TOmniWorker の背後にある全体的な考え方は、典型的なシングル スレッドの Delphi アプリケーションと同様に、ほとんどのコードがメッセージ ハンドラで (そしてもちろん、メッセージ ハンドラから呼び出されるコードで) 実行されるということです。

特別なメッセージ ('Start!') を送信して、メッセージ ハンドラーで実行を開始することができますが、メッセージ ハンドラーの実行中はメッセージが処理されないことに注意してください。[より具体的に言えば、送信することはできますが、受信したい場合は、Task.Comm.Receive を介して手動で行う必要があります。] 各 TOmniWorker はシングルスレッド環境であり、メッセージ ハンドラを実行します。それ以外のことはできません。

于 2011-01-20T17:22:10.963 に答える