Windows用バックアップソフトの作成を開始しました

スポンサーリンク

概要

完成まで至るのかどうか分かりませんが…
この投稿は作成時に参考とさせていただいたウェブサイトの備忘録です。

マルチスレッド

バックアップアプリではファイルのコピーに時間がかかるため、マルチスレッド化は必須です。
マルチスレッドについて詳しくはありませんが、まずは「どこでも使える汎用性の高いプログレスバーダイアログを考えてみた」を参考にマルチスレッド化し、進捗表示を行うようにしてみました。

「別のスレッドにマーシャリングされたインターフェイスを呼び出しました。」

上記を参考にマルチスレッド化しましたが、別のスレッドからUIを書き換えようとすると見出しの例外が発生しました。
この例外は「C# WinUI 3アプリで「別のスレッドにマーシャリングされたインターフェイスを呼び出しました。(0x8001010E(RPC_E_WRONG_THREAD))」が表示された場合の対処法」を参考にさせていただき、対処しました。

ファイル一覧の取得

Directory.GetFilesメソッドを使用することでファイル一覧の取得は可能ですが、安定性を考えると再帰的なプログラムを書いた方が良いと思いました。
C#:サブディレクトリも含めた全てのファイル名取得する」を参考にさせていただきました。

進捗の確認や中断や中止のできるファイルコピー

File.Copyメソッドを使用することでファイルのコピーが行えますが、進捗の確認が行えず、中断(一時停止)や中止(終了)を行うことができません。
これでは巨大ファイルのコピー時に不便ですので、「【.NET】CopyFileExを使ってコピーの進捗状況を取得する【WPF】」を参考にさせていただき、これらの操作をできるようにする予定です。

コメント

タイトルとURLをコピーしました