public static bool TryDeleteDirectory()

in csharp/NativeUtils/FileJanitor.cs [58:108]


		public static bool TryDeleteDirectory(string dir)
		{
			bool isSuccess = false;
			using (var lockFile = TryCreateLockFile(dir))
			{
				if (null == lockFile)
					return false;

				var files = Directory.EnumerateFiles(dir);
				var opened = new List<FileStream>();

				foreach (string fname in files)
					if (!IsLockFile(fname))
					{
						var f = TryOpenWriteable(fname);
						if (null == f)
							goto Fail;

						opened.Add(f);
					}

				isSuccess = true;

				Fail:
				foreach (var f in opened)
				{
					f.Dispose();
				}

				if (isSuccess)
				{
					foreach (string fname in files)
					{
						if (!IsLockFile(fname) && !TryDeleteFile(fname))
							return false;
					}
				}
			}

			if (isSuccess)
			{
				try
				{
					Directory.Delete(dir);
					return true;
				}
				catch { }
			}

			return false;
		}