SimpleSync
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
#topicpath
壊れかけたハードディスクからコピーできるファイルだけ取り...
#ref(SimpleSync-20061027.png,nolink)
&br;
** 言い訳 [#x0ad0575]
この手のソフトはたくさんあります。なぜわざわざ作ったかと...
マルチスレッド化により複雑になってしまいました。%%C#で書...
- 使い捨てなので機能拡張の予定はありません。
- 壊れかけのハードディスクからのサルベージが目的のため、...
- Syncと名乗っていますが、厳密に言うと同期ではありません...
- ファイルではなくパーティションイメージをバックアップす...
** ダウンロード [#jdb13268]
|ライセンス|パブリックドメイン|
|ソース|&ref(SimpleSync-20070304.zip);|
|備考|マルチスレッド、進捗表示改善、中止サポート|
#include(:VCS2005Exp,notitle)
*** 過去のリリース [#s916288a]
|ソース|&ref(SimpleSync-20061027.zip);|シングルスレッド、...
** 実装 [#p141c208]
実装で使っているテクニックを紹介します。書式は煩雑な印象...
*** 匿名メソッド [#bc98cf13]
最初にファイルサイズをチェックしてからコピーを開始します...
long size = 0, totalSize = 0, count = 0, totalCount = 0;
CompareFolder(di1, di2, "", delegate(FileInfo fi1, FileI...
{
SetProgressText("--- / {0:#,##0} MB , --- / {1:#,##0...
totalSize / 1024 / 1024, totalCount);
if (fi1 == null) return;
totalSize += fi1.Length;
totalCount++;
});
if (totalSize == 0) totalSize = 1;
CompareFolder(di1, di2, "", delegate(FileInfo fi1, FileI...
{
CopyFile(fi1, fi2, delegate(long pos)
{
SetProgressText(
"{0:#,##0} / {1:#,##0} MB ({2} %) , {3:#,##0...
(size + pos) / 1024 / 1024, totalSize / 1024...
size * 100 / totalSize, count, totalCount);
},
delegate
{
size += fi1.Length;
count++;
});
});
メソッドにブロックを渡すような感じです。元々あった委譲の...
C# 3.0ではラムダ式という簡単な書式が使用できるようになり...
[C# 2.0] delegate(FileInfo fi1, FileInfo fi2) {}
[C# 3.0] (fi1, fi2) => {}
*** 汎用delegate [#d89dfbb0]
既存のメソッドをdelegateとして渡すときにキャストをすると...
private void SetLabelText(Label label, string t)
{
label.Text = t;
}
private void SetFolderLabel(string t)
{
Invoke((Action<Label, string>)SetLabelText, label3, ...
}
//** コメント [#pca80038]
//#comment(below)
終了行:
#topicpath
壊れかけたハードディスクからコピーできるファイルだけ取り...
#ref(SimpleSync-20061027.png,nolink)
&br;
** 言い訳 [#x0ad0575]
この手のソフトはたくさんあります。なぜわざわざ作ったかと...
マルチスレッド化により複雑になってしまいました。%%C#で書...
- 使い捨てなので機能拡張の予定はありません。
- 壊れかけのハードディスクからのサルベージが目的のため、...
- Syncと名乗っていますが、厳密に言うと同期ではありません...
- ファイルではなくパーティションイメージをバックアップす...
** ダウンロード [#jdb13268]
|ライセンス|パブリックドメイン|
|ソース|&ref(SimpleSync-20070304.zip);|
|備考|マルチスレッド、進捗表示改善、中止サポート|
#include(:VCS2005Exp,notitle)
*** 過去のリリース [#s916288a]
|ソース|&ref(SimpleSync-20061027.zip);|シングルスレッド、...
** 実装 [#p141c208]
実装で使っているテクニックを紹介します。書式は煩雑な印象...
*** 匿名メソッド [#bc98cf13]
最初にファイルサイズをチェックしてからコピーを開始します...
long size = 0, totalSize = 0, count = 0, totalCount = 0;
CompareFolder(di1, di2, "", delegate(FileInfo fi1, FileI...
{
SetProgressText("--- / {0:#,##0} MB , --- / {1:#,##0...
totalSize / 1024 / 1024, totalCount);
if (fi1 == null) return;
totalSize += fi1.Length;
totalCount++;
});
if (totalSize == 0) totalSize = 1;
CompareFolder(di1, di2, "", delegate(FileInfo fi1, FileI...
{
CopyFile(fi1, fi2, delegate(long pos)
{
SetProgressText(
"{0:#,##0} / {1:#,##0} MB ({2} %) , {3:#,##0...
(size + pos) / 1024 / 1024, totalSize / 1024...
size * 100 / totalSize, count, totalCount);
},
delegate
{
size += fi1.Length;
count++;
});
});
メソッドにブロックを渡すような感じです。元々あった委譲の...
C# 3.0ではラムダ式という簡単な書式が使用できるようになり...
[C# 2.0] delegate(FileInfo fi1, FileInfo fi2) {}
[C# 3.0] (fi1, fi2) => {}
*** 汎用delegate [#d89dfbb0]
既存のメソッドをdelegateとして渡すときにキャストをすると...
private void SetLabelText(Label label, string t)
{
label.Text = t;
}
private void SetFolderLabel(string t)
{
Invoke((Action<Label, string>)SetLabelText, label3, ...
}
//** コメント [#pca80038]
//#comment(below)
ページ名: