- ユーザーのコンピュータからファイルをロードしますSilverlightのクライアント。
- ファイルの各行について、URLにGETを発行し、返されたJSON検証メッセージに基づいて行を承認または拒否する必要があります。
- すべての行が完了したら、渡された行の数と失敗した行の数をユーザーに表示します。
私はBackgroundWorkerでこれを "同期的に"実行することをお勧めしましたが、それはSL非同期の考え方を破ります。
私のコードは現在OpenFileDialogの結果をファイルを強く型付けされたオブジェクトのリストに読み込むBackgroundWorkerに渡します(クライアント側の検証)。私はWebClientを作成し、回線をループするときに何度もDownloadStringAsyncを呼び出します。多くの場合、バックグラウンドワーカーはWebClientが完了する前に完了したイベントメソッドを完了して実行します。 UIスレッドは、必要に応じて非同期で実行できますが、実際にデータを取得するまでbackgroundworkerスレッドを完了するか、すべての(数百)行が検証されたときに動作する追加のイベントハンドラが必要です。
Xの合計イベントの最後のCompletedイベントを処理したい場合のベストプラクティスは何ですか?ここで自動リセットイベントを使用すると役立ちますか?
ファイル全体をサーバーに送信してから、サーバーへの1回のラウンドトリップで検証メッセージの完全なセットを取得するだけではない理由はありますか? – AnthonyWJones
@AnthonyWJonesファイルサイズ、行数、およびユーザーへの報告の進捗状況によって、このアプローチが選択されました。 「完全ダンプ」を最初にテストしましたが、処理に時間がかかり、ユーザーにライブレポートを返すことは、技術的には機能しない場合は、より機能的なアプローチとみなされました。 – Henrik