在MVC 4應用程序中,我有一個將文件複製到目標文件夾的任務。因爲我有多個文件,所以我爲每個文件創建一個任務,並且我想等到他們完成。問題是我的代碼塊在Task.WaitAll(copyingTasks.ToArray())
,好像這些任務永遠不會結束,所以它永遠不會傳遞那行代碼。下面你有示例代碼:MVC 4應用程序上的Task.WaitAll(...)塊
private void CopyFilesFromWorkingCopyForProject(string projectName)
{
var copyingTasks = new List<Task>
{
CopyAllFromDirectoryToDirectory(FilesUtils.AndroidConfigsPath(), FilesUtils.AndroidPathForProject(projectName)),
CopyAllFromDirectoryToDirectory(FilesUtils.AndroidValuesPath(), FilesUtils.AndroidPathForProject(projectName)),
CopyFileToDirectory(FilesUtils.AndroidManifestPath(), FilesUtils.AndroidPathForProject(projectName)),
CopyAllFromDirectoryToDirectory(FilesUtils.IosConfigsPath(), FilesUtils.IosPathForProject(projectName))
};
Task.WaitAll(copyingTasks.ToArray());
}
private async Task CopyAllFromDirectoryToDirectory(string sourceDirectory, string destinationDirectory)
{
foreach (string filename in Directory.EnumerateFiles(sourceDirectory))
{
await CopyFileToDirectory(filename, destinationDirectory);
}
}
private async Task CopyFileToDirectory(string filename, string destinationDirectory)
{
using (FileStream sourceStream = File.Open(filename, FileMode.Open))
{
using (FileStream destinationStream = File.Create(destinationDirectory + filename.Substring(filename.LastIndexOf('\\'))))
{
await sourceStream.CopyToAsync(destinationStream);
}
}
}
如果我評論Task.WaitAll(copyingTasks.ToArray());
它不會阻止了,但我想等待被複制所有文件。
是否有任何複製正在進行?我沒有看到任務開始的位置。 –