現在のprocessmessageループで現在の命令を実行するのではなく、次のprocessmessageループで実行します。彼らはそれを行う良い方法ですか?それはそれは労働者に呼び出されたのみ場合次のprocessmessageにタスクの実行を報告する方法は?
答えて
TThread.Queue()
が非同期の問題だ場合TThread.queueシームは:(私もFireMonkeyの下mは何イムそのTThread.queueがメインスレッドから実行することはできません以外を探していなければTThread.Queue()
は、メインスレッドで呼び出されるとスレッドは、それが同期している代わりに。
は、あなたが求めているものを行うには、あなたがしてTThread.Queue()
を呼び出すワーカースレッドを作成するためにTThread.CreateAnonymousThread()
またはTTask.Run()
を使用することができます。
:RSP-15427 Add an option to let TThread.Queue() run asynchronously when called by the main UI threadに投票してください。
ありがとう私は投票...はい、私は右、TThread.CreateAnonymousThread()内のTThread.Queue()と他の選択肢がありませんでした:(それはちょうどこれのためのスレッドを作成するために少し重いです:( – loki
参照[遅延アクション再訪()を使用してメソッドをポストすることで動作します(例: 'PostMessage()') 'を実行し、次のメッセージループで実行します –
@LURDこれはWindowsのみのソリューションですFireMonkeyというタグが付いていますので、クロスプラットフォームのソリューションが必要であることを示している可能性があります –
- 1. 長期実行タスクの実行方法
- 2. AngularJS +次のタスクを実行する前にタスクが終了するのを待つ方法
- 3. IISで実行中のエラー報告
- 4. Android - バグの報告方法
- 5. テスト実行を停止した後にタスクを実行する方法は?
- 6. スレッドプール:実行中のタスクから子タスクを生成する方法は?
- 7. Laravel Scheduler:平日にタスクを実行する方法は?
- 8. 長時間実行しているPostgreSQL関数の進行状況をクライアントに報告する方法
- 9. セロリのタスクを確実にする方法セロリのタスクの実行が重複しないようにする
- 10. 次のクエリの実行方法は?
- 11. タスクのリストを実行するには?
- 12. ジャスパー報告書の作成方法は?
- 13. Zenityバグを報告する方法
- 14. タスクスケジューラ:ログイン時に実行するタスクをスケジュールする方法
- 15. WindowsのメインループでC++のタスクを実行する方法
- 16. Portable HttpClientの進捗報告の実装方法
- 17. 異なるコマンドで2つのタスクを実行する方法
- 18. 実行ファイルに.Netの情報を保存する方法
- 19. Java 7:並列タスクをバッチで実行する方法は?
- 20. SSIS:スクリプトコンポーネントまたはタスクでコードをステップ実行する方法
- 21. Sbtでは、タスクでコマンドを実行する方法
- 22. Scalazタスクを並行して実行する方法
- 23. 私は次の方法でWindowsのバッチファイルを実行すると
- 24. 2つのタスクを実行する正しい方法
- 25. 別々のCPUコアでタスクを並列実行する方法
- 26. シェルの外からタスクを実行する方法
- 27. Rails 3.1でレンダリングした後にタスクを実行する方法
- 28. ビルドに失敗してもAntタスクを実行する方法
- 29. Sharepoint 2013チームにバグを報告する方法は?
- 30. SimGrid。タスクの実行中にデータを送受信する方法は?
ProcessMessagesを必ず呼びたくはありません。 –
私はちょうどmainthreadにとどまりたいです:) – loki
あなたはProcessMessagesを呼びたくありません。 –