public static long DirSize(string path) 
{
long result = 0;
DirectoryInfo objCurrDirInfo = new DirectoryInfo(path);
FileInfo[] arrFileInfo = objCurrDirInfo.GetFiles();
foreach (FileInfo objFileInfo in arrFileInfo) 
{
result += objFileInfo.Length;
}
DirectoryInfo[] arrDirInfo = objCurrDirInfo.GetDirectories();
foreach (DirectoryInfo objDirInfo in arrDirInfo) 
{
result += DirSize(objDirInfo.FullName);
}
return result;
}