Skip to content

Commit cfd001d

Browse files
committed
Fix freeze when attempting to compress on certain unknown drive types (RAMdisks, SSHDs) due to DiskDetector not properly bubbling exceptions.
1 parent 6ad0e69 commit cfd001d

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

CompactGUI/Models/ActiveFolder.vb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,12 @@ Public Class ActiveFolder : Inherits ObservableObject
2323
Public ReadOnly Property DiskType As DiskDetector.Models.HardwareType
2424
Get
2525
If FolderName Is Nothing Then Return Models.HardwareType.Unknown
26-
Return DiskDetector.Detector.DetectDrive(FolderName.First, DiskDetector.Models.QueryType.RotationRate).HardwareType
26+
27+
Try
28+
Return DiskDetector.Detector.DetectDrive(FolderName.First, DiskDetector.Models.QueryType.RotationRate).HardwareType
29+
Catch ex As Exception
30+
Return Models.HardwareType.Unknown
31+
End Try
2732

2833
End Get
2934
End Property

CompactGUI/ViewModels/MainViewModel.vb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,9 @@ Public Class MainViewModel : Inherits ObservableObject
196196
Dim exclist As String() = GetSkipList()
197197

198198
CoreCompactor = New Core.Compactor(ActiveFolder.FolderName, Core.WOFConvertCompressionLevel(ActiveFolder.SelectedCompressionMode), exclist)
199-
Dim res = Await CoreCompactor.RunCompactAsync(CProgress, If(ActiveFolder.DiskType = DiskDetector.Models.HardwareType.Hdd AndAlso SettingsHandler.AppSettings.LockHDDsToOneThread, 1, SettingsHandler.AppSettings.MaxCompressionThreads))
199+
Dim HDDType As DiskDetector.Models.HardwareType = ActiveFolder.DiskType
200+
Dim IsLockedToOneThread As Boolean = SettingsHandler.AppSettings.LockHDDsToOneThread
201+
Dim res = Await CoreCompactor.RunCompactAsync(CProgress, If(HDDType = DiskDetector.Models.HardwareType.Hdd AndAlso IsLockedToOneThread, 1, SettingsHandler.AppSettings.MaxCompressionThreads))
200202

201203
ActiveFolder.IsFreshlyCompressed = False
202204
If res Then ActiveFolder.IsFreshlyCompressed = True

0 commit comments

Comments
 (0)