哪些方法应该用于线程和复制文件
本文关键字:线程 复制 文件 用于 方法 | 更新日期: 2023-09-27 18:13:38
我有一个将文件从一个目录复制到另一个目录的方法。文件将是巨大的,我想使用线程来确保控制台不会锁定。
在复制文件时使用线程的最佳方法是什么?我已经读了,似乎有三种方法使用线程:线程池,线程,异步方法。
使用其中一个比另一个有明显的好处吗?
如果你想在后台线程上运行它,现在推荐的方法(除非你有特殊的理由不这样做)是使用TPL中的Tasks
您可以使用以下代码执行文件复制,该代码将在后台线程中运行。
Task.Run(() => System.IO.File.Copy(someFile, newFile));
如果您需要在任务完成后执行额外的代码,您可以使用continuation来执行。
Task.Run(() => System.IO.File.Copy(someFile, newFile)).ContinueWith(() =>
{
// Some more stuff to do once copy is completed.
});
编辑
如果要对大量文件执行复制,另一种方法是并行运行它们。TPL库正确处理线程池,并确保一切正常运行。
Task.Run(() = >
{
collectionOfFiles.AsParallel.ForAll(file => System.IO.File.Copy(file, newFile));
}
如果需要的话,可以用更花哨的
Task.Run(() =>
{
collectionOfFiles.AsParallel().ForAll(file =>
{
string newFile = string.Format(@"C:'{0}", file);
System.IO.File.Copy(file, newFile);
// Do more
});
});
这将复制所有的文件,并行地,在一个工作线程。