ちょっと教えてください。
UIをブロックしないで待機する方法を模索しています。
一連の作業で待機がたくさんあり、そのためにソースが分断化され困っています。
// 理想的なC#での例
Console.WriteLine("処理開始");
// 非同期に3000ミリ秒待機 - UIをブロックしない
await Task.Delay(3000);
// 待機後、次の行から実行
Console.WriteLine("3秒後に処理再開");
https://someiyoshino.info/entry/2025/05/04/175056
ここにC#でのAWaitの実現方法が解説されてます(自分はあまり理解できない)。
このようにDelphiでUIをブロックしない待機と
待機終了後に次行から再開ができることが理想ですが
Delphiでは無理なんでしょうか?
sleep(10)
application.processmessages
を30回くらい繰り返すだけではダメでしょうか。
uiを生かすなら、処理中の再実行防止策を講じる必要はあると思いますが。
返信ありがとうございます。
最初に挙げた条件に基づくと、それしかないんでしょうね。
後出して心苦しいんですが、実はFMXでプログラミングしています。
で、AndroidだとApplication.ProcessMessageがWindowsにように機能しないと聞いたのでちょっとためらってました。
あれはすでに解決済みの一時的なバグだったのか、仕様なのか不明ですが。
(今のHelpだと、これの繰り返し使用で、Androidアプリがフリーズするって注意書きが消えてるが。。。)
単なるUI待ちだったら
・タイマーを使う
・スレッドを使う スレッドの中でメインに安全に通知
・スレッドを使う メッセージでメインに通知
などいろいろな方法があるかと思います
| ツイート |
|