OriginalGriff
Чтобы добавить к тому, что говорит Дэйв, в ваших документах есть папки, которые поддерживает система: в основном они связаны с корзиной.
Если вы проверяете их, вы можете уменьшить количество исключений, что сэкономит время (значительное время, если ваша папка документов имеет много подкаталогов).
Это может помочь:
private long SizeDirFolders(string dir, DirNode node)
{
if (!IsIgnorable(dir))
{
if (dir.EndsWith(":")) dir += "\\";
foreach (string path in Directory.GetDirectories(dir))
{
try
{
int last = path.LastIndexOf('\\');
if (last < 0)
{
last = 0;
}
string sname = path.Substring(last);
if (!IsIgnorable(sname))
{
DirNode dn = new DirNode(sname, 0);
lock (Root)
{
node.Add(dn);
}
SizeDir(path, dn);
}
}
catch (UnauthorizedAccessException) { } //Discard
catch (Exception ex)
{
DialogResult result = MessageBox.Show("An error occurred: " + ex.Message + "\nResults for the " + dir + "will not be complete", "Error!", MessageBoxButtons.OKCancel);
if (result == DialogResult.Cancel) return node.Size;
}
}
}
return node.Size;
}
private bool IsIgnorable(string dir)
{
if (dir.EndsWith(":System Volume Information")) return true;
if (dir.Contains(":$RECYCLE.BIN")) return true;
return false;
}
private void SizeDir(string dir, DirNode node)
{
if (!IsIgnorable(dir))
{
DirNode dn = SizeDirFiles(dir);
lock (Root)
{
node.Add(dn);
}
SizeDirFolders(dir, node);
}
}
Lefteris Gkinis
Да, я понимаю, но в вашем коде есть что-то такое, чего я не могу понять.
Проблема заключается в `SizeDirFiles(dir)`, который, вероятно, является некоторой функцией, которая не объявлена.
Можете ли вы помочь в этом ?
Видите ли, я все это превращаю в vb.net и есть повешение.
Lefteris Gkinis
Кроме того, я не могу понять, как работает этот класс. Как отправить файл и вернуть путь к подкаталогу