現在作業中のアプリケーションは、ユーザーが[送信]ボタンを押したときに発生するI / OまたはCPUを集中的に使用するアクション(ファイル圧縮、ファイル転送、サードパーティAPIとの通信など)を実行します。
私は現在、これらのアクションをメインアプリケーション内の別々のスレッドにプッシュする必要があることを雇用主に説得しようとしています(常に最大2つのワーカースレッドがアクティブである必要があります)が、私の同僚は次のように主張しています:
優先度の低いスレッドで実行される余分な処理は、GUIの使いやすさに影響を与える可能性があります。
私の見解では、I / OまたはCPUを集中的に使用するアクティビティをワーカースレッドにプッシュし、進行状況のレポート中にInvoke呼び出しを使用してUIを更新することは、集中的なアクティビティを処理するためのかなり標準的な方法です。
私は間違っていますか?もしそうなら、誰かが説明を提供できますか?
編集:
これまでの回答ありがとうございます。
明確にする必要があります。非ブロッキングに対する同僚の解決策は、フォルダーをスキャンしてファイルの圧縮/転送アクティビティを処理するタイマーループを含む子プロセスを生成することです。(これはサードパーティのAPIへの呼び出しをカバーしていないことに注意してください-私は彼の解決策が何であるかわかりません。
このアプローチの主な問題は、メインアプリケーションがアクティビティの状態に関するすべてのスコープを失うことです。これにより、IMHOがさらに複雑になります(進行状況レポートの解決策は、両方のプロセスでWindowsメッセージポンプを公開し、 2つのプロセス)。