さて、2つの問題:
データベースを処理するときにフォームがしばらくフリーズしているように見えますが、フリーズの問題を解決するためにバックグラウンドワーカーを使用したくありません。
虚栄心、傲慢、現実が混ざり合うことはめったにありません。短い時間(0.1〜0.5秒)を超える操作は非同期で実行する必要があります。これは、UIの応答性を維持する唯一の方法です。問題が何であるかに関係なく、それがインターネットアプリでより長くかかる可能性がある場合は、それらを切り離します。
だが:
問題は、新しいレコードを挿入したり、データベースからレコードを取得したりするときに発生する遅延時間にあります。
それで、問題は何ですか?真剣に。これはレイテンシーの問題ですか(ラウンドトリップが多すぎる、より効率的なSQL、バッチで作業するため、それぞれの後に結果を待つ20のq1uestionsを送信しない)、またはサーバーがオーバーロードされています-これが本当にレイテンシーであるかどうかは質問から明らかではありません問題。
最後に:
その遅延時間をなくしたい
物理学の規則(主に光速)を変えるためにあなたが信じるどんな神にも、あるいはあなたの地元の医師に、最終的に量子テレポーテーションを低コストで実行可能にするように祈ってください。パケットは移動するのに時間がかかり、それを変更する方法はありません。
あまりにも多くのラウンドトリップを使用していないかどうかを確認してください。SQLでSQLサーバーをリモートで使用しないでください(!)Webサービスを配置し、アプリケーションに適合させます。画面に1:1で一致する場合もあるため、1回の往復でデータを要求して更新を送信できます。十数ではありません。12年前に.NETのカスタムORMで同様のことを行ったとき、1回の実行で複数のクエリを受け入れ、それらの複数の結果セットを再利用するデータアクセスレイヤーを使用しました。そのため、10個のドロップダウンを持つフォームで10個すべてを要求できます。 1回の往復でのデータセット。リクエストのインターネット時間が0.1秒かかる場合、これにより0.9秒節約できます。往復(木を作る)が約100回(!)のフォームがあり、それを5回未満に減らしました。「時間がかかる」から「どうやってそこに」という話です。さらに、それは非同期でした、ごめんなさい。
次に、瞬時に高帯域幅の接続がない限り、大量のデータの移動が遅いことを認識してください。
これは非同期が何のために行われるかということです-最適化できない転送時間または待ち時間の問題があり、非同期を使用したくない場合は、ひどい体験を提供し続けてください。