我有一个提取targz文件的应用程序,我希望ProgressBar
能够查看提取的进度。
但我有这个:
public void ExtractTGZ(String gzArchiveName, String destFolder)
{
Stream inStream = File.OpenRead(gzArchiveName);
Stream gzipStream = new GZipInputStream(inStream);
TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream);
tarArchive.ExtractContents(destFolder);
tarArchive.Close();
gzipStream.Close();
inStream.Close();
}
你有什么想法吗?我实际上搜索了如何知道传输的字节数和总字节数。我没有找到有关此信息和targz文件的具体信息。
答案 0 :(得分:1)
您将无法使用ExtractContents执行此操作。它是一个同步函数,意味着它将在返回之前运行到结束,并且在返回之前无法获得进度。
获得反馈的通常方法是向提取方法添加异步回调函数,然后让提取方法通过此回调异步报告进度。但是,SharpZipLib API不直接支持这一点,据我所知,通过文档快速轻松。您必须自己创建此功能。
你可以看看 This example on how to control the extraction from the tar或Find inspiration in the implementation of ExtractContents
然后,您可以根据total_entries / processed_entries或total_bytes / processed_bytes报告进度。
关于进行异步回调Take a look here。这不完全是你在做什么,但接受的答案说明了如何使用异步调用。