Browse compressed file content
This commit is contained in:
@@ -28,7 +28,6 @@ public class VirtualDiskContentProvider : SubContentProviderBase, IVirtualDiskCo
|
||||
var parentItem = await ParentContentProvider.GetItemByNativePathAsync(supportedPath, element.PointInTime);
|
||||
if (parentItem is not IElement parentElement) return null;
|
||||
|
||||
|
||||
var contentReaderFactory = _contentAccessorFactory.GetContentReaderFactory(parentElement.Provider);
|
||||
var reader = await contentReaderFactory.CreateContentReaderAsync(parentElement);
|
||||
|
||||
|
||||
@@ -79,7 +79,12 @@ public class VirtualDiskSubContentProvider : IVirtualDiskSubContentProvider
|
||||
var childFullName = new FullName(childFullNameBase);
|
||||
var childNativePath = new NativePath(childNativePathBase);
|
||||
|
||||
var parent = new AbsolutePath(_timelessContentProvider, pointInTime, childFullName.GetParent()!, AbsolutePathType.Container);
|
||||
var parent = new AbsolutePath(
|
||||
_timelessContentProvider,
|
||||
pointInTime,
|
||||
childFullName.GetParent()!,
|
||||
AbsolutePathType.Container
|
||||
);
|
||||
|
||||
var container = discReader.Root;
|
||||
for (var i = 1; i < pathParts.Length - 1; i++)
|
||||
@@ -125,7 +130,7 @@ public class VirtualDiskSubContentProvider : IVirtualDiskSubContentProvider
|
||||
private IContainer CreateContainer(
|
||||
UdfReader discReader,
|
||||
DiscDirectoryInfo sourceContainer,
|
||||
FullName fullname,
|
||||
FullName fullName,
|
||||
NativePath nativePath,
|
||||
IContentProvider parentContentProvider,
|
||||
AbsolutePath parent,
|
||||
@@ -137,7 +142,7 @@ public class VirtualDiskSubContentProvider : IVirtualDiskSubContentProvider
|
||||
var container = new Container(
|
||||
sourceContainer.Name,
|
||||
sourceContainer.Name,
|
||||
fullname,
|
||||
fullName,
|
||||
nativePath,
|
||||
parent,
|
||||
true,
|
||||
@@ -159,8 +164,16 @@ public class VirtualDiskSubContentProvider : IVirtualDiskSubContentProvider
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(_ =>
|
||||
{
|
||||
LoadChildren(container, sourceContainer, children, pointInTime, exceptions);
|
||||
discReader.Dispose();
|
||||
try
|
||||
{
|
||||
container.StartLoading();
|
||||
LoadChildren(container, sourceContainer, children, pointInTime, exceptions);
|
||||
}
|
||||
finally
|
||||
{
|
||||
discReader.Dispose();
|
||||
container.StopLoading();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user