deadlock-dotnet-sdk
1.0.1
dotnet add package deadlock-dotnet-sdk --version 1.0.1
NuGet\Install-Package deadlock-dotnet-sdk -Version 1.0.1
<PackageReference Include="deadlock-dotnet-sdk" Version="1.0.1" />
paket add deadlock-dotnet-sdk --version 1.0.1
#r "nuget: deadlock-dotnet-sdk, 1.0.1"
// Install deadlock-dotnet-sdk as a Cake Addin #addin nuget:?package=deadlock-dotnet-sdk&version=1.0.1 // Install deadlock-dotnet-sdk as a Cake Tool #tool nuget:?package=deadlock-dotnet-sdk&version=1.0.1
deadlock-dotnet-sdk
deadlock-dotnet-sdk is a simple-to-use SDK for unlocking files in C# / dotnet on Windows based operating systems.
Usage
Add deadlock-dotnet-sdk to your solution tree using NuGet:
Install-Package deadlock-dotnet-sdk
You can initialize a new DeadLock
helper object like so:
DeadLock deadLock = new DeadLock();
In addition, if you would like to rethrow inner exceptions, you can change the RethrowExceptions
property when declaring a new DeadLock
object:
DeadLock deadLock = new DeadLock(`true` | `false`);
You can also change the property dynamically:
deadlock.RethrowExceptions = `true` | `false`
Finding the processes that are locking a file
To find all the FileLocker
objects that are locking a file, you can make use of the FindLockingProcesses
method:
string path = @"C:\...\file.txt";
List<FileLocker> lockers = DeadLock.FindLockingProcesses(path);
You can also run the code asynchronously by calling the FindLockingProcessesAsync
method`:
string path = @"C:\...\file.txt";
List<FileLocker> lockers = await DeadLock.FindLockingProcessesAsync(path);
To find the Process
objects that are locking one or more files, you can invoke the FindLockingProcesses
(or FindLockingProcessesAsync
) method with multiple path
parameters:
List<FileLocker> fileLockers = FindLockingProcesses("a", "c", "c");
Unlocking a file
To unlock a FileLocker
, you can execute the Unlock
method:
DeadLock.Unlock(locker);
You can also run the code asynchronously by running the UnlockAsync
method:
await DeadLock.UnlockAsync(locker);
To unlock more than one FileLocker
object, you can invoke the Unlock
(or UnlockAsync
) method with multiple FileLocker
parameters:
Unlock(fileLockerA, fileLockerB, fileLockerC);
Alternatively, if you only want to unlock a file and you are not interested in using the FileLocker
objects, you can do so by providing any of the Unlock
or UnlockAsync
methods with one or more string
variables that represent the path or paths of the file(s) that should be unlocked:
// Unlock a single path
string path = @"C:\...\file.txt";
Unlock(path);
// Unlock multiple files
Unlock(path1, path2, path3);
// Asynchronously unlock one or more files
await UnlockAsync(path);
await UnlockAsync(path1, path2, path3);
FileLocker
The FileLocker
object contains a List
of System.Diagnostics.Process
objects that are locking a file.
You can retrieve the List
of Process
objects by retrieving the respective property:
List<Process> processes = fileLocker.Lockers;
To retrieve the path of the file that the Process
objects are locking, you can make use of the Path
property:
string path = fileLocker.Path;
Error handling
deadlock-dotnet-sdk has three specific Exception
types that might occur when trying to find the Process
objects that are locking a file.
RegisterResourceException
RmListException
StartSessionException
In case you want more detailed error messages, it is recommended that you call the Marshal.GetLastWin32Error
method as soon as one of these Exception
types occur:
https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.marshal.getlastwin32error?view=net-6.0
RegisterResourceException
This error occurs when the system goes out of memory, when a specific time-out occurs or if an invalid handle is detected. You can find more information about this exception here:
https://docs.microsoft.com/en-us/windows/win32/api/restartmanager/nf-restartmanager-rmregisterresources#return-value
RmListException
This error occurs when the system goes out of memory, when a specific time-out occurs or if an invalid handle is detected. You can find more information about this exception here:
https://docs.microsoft.com/en-us/windows/win32/api/restartmanager/nf-restartmanager-rmgetlist#return-value
StartSessionException
This error occurs when the system goes out of memory, when a specific time-out occurs or if an invalid handle is detected. You can find more information about this exception here:
https://docs.microsoft.com/en-us/windows/win32/api/restartmanager/nf-restartmanager-rmstartsession#return-value
Credits
About
This library is maintained by CodeDead. You can find more about us using the following links:
Copyright © 2022 CodeDead
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0-windows7.0 is compatible. net7.0-windows was computed. net8.0-windows was computed. |
-
net6.0-windows7.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.