我正在尝试创建一个应用程序,显示文件夹及其子文件夹中.doc文件的所有作者,问题是我使用Directory.GetFiles("*.doc", SearchOption.AllDirectories)
并且当我尝试从文件夹中读取时非常很多文件,应用冻结了这一点。
这是我的代码
FileInfo[] Files = dir.GetFiles("*.doc", SearchOption.AllDirectories);
foreach(FileInfo file in Files)
{
try
{
//ConvertDOCToDOCX(file.FullName);
using(WordprocessingDocument sourcePresentationDocument = WordprocessingDocument.Open(file.FullName, false))
{
metadataList.Add(new Metadata()
{
Name = "Title", Value = file.Name
});
metadataList.Add(new Metadata()
{
Name = "Author", Value = sourcePresentationDocument.PackageProperties.Creator
});
metadataList.Add(new Metadata()
{
Name = "", Value = ""
});
}
}
}
答案 0 :(得分:1)
我认为你不需要这个“WordprocessingDocument” - 这会产生很大的负担 - 你可以通过.net默认文件方法读取元信息。
答案 1 :(得分:0)
此时应用程序冻结
是的,因为你在UI线程中做了很多工作。不要这样做 - 永远不要那样做。
您应该在后台线程(使用BackgroundWorker
或Task.Run
)中完成所有工作,然后在完成后仅修改UI(在UI线程上)。