MadLock_MadLord 1.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package MadLock_MadLord --version 1.0.0
NuGet\Install-Package MadLock_MadLord -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MadLock_MadLord" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MadLock_MadLord --version 1.0.0
#r "nuget: MadLock_MadLord, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install MadLock_MadLord as a Cake Addin
#addin nuget:?package=MadLock_MadLord&version=1.0.0

// Install MadLock_MadLord as a Cake Tool
#tool nuget:?package=MadLock_MadLord&version=1.0.0

MadLock_MadLord

Sample code.

Create a C# .NET Core console application and copy following code:

// *********************************
// ** MADLOCK_MADLORD SAMPLE CODE **
// *********************************
using System;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
using MadLock;

namespace Test
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // MadLock need a Azure Redis Cache connection string
            const string REDIS_CONNECTION = "PutYourAzureRedisCacheConnectionStringHere";

            // Create an instance of MadLocker
            MadLocker locker = new MadLocker(REDIS_CONNECTION);

            // After first instance creation, you can create more instance 
            // of MadLocker anywhere in your code Without the need of 
            // specifying the Azure Redis Cache connection string again
            // and MadLocker will use connection already created.
            //
            // Ej.:  MadLocker locker2 = new MadLocker();

            // You can use multiples Azure Redis Cache resource for
            // different instances. 
            //
            // Ej.:  MadLocker locker1 = new MadLocker(CONN_1);
            //       MadLocker locker2 = new MadLocker(CONN_2);

            // You can use multiples Azure Redis Cache resource for
            // different instances. 
            //
            // Ej.:  MadLocker locker1 = new MadLocker(CONN_1);
            //       MadLocker locker2 = new MadLocker(CONN_2);

            // The default connection for a MadLocker instance, if you 
            // do not specify the connection string, will be the first
            // created in the proyect. You can also change default connection
            // programmatically.
            //
            // Ej.:  loker2.setAsDefault();


            string resourceId = "PapasFritas";

            Console.WriteLine("Lock test start.");

            // Unlock resource
            locker.UnlockResource(resourceId);

            // Lock a resource with default options
            Debug.Assert(locker.LockResource(resourceId),"Should lock 1.");

            // Trying to lock a locked resource will fail.
            Debug.Assert(!locker.LockResource(resourceId), "Should not lock 1.");

            // Unlock resource
            locker.UnlockResource(resourceId);

            // Lock a resource that will be unlocked after 2 seconds
            Debug.Assert(locker.LockResource(resourceId,2), "Should lock 2.");

            // Wait 3 seconds for lock exipring and lock again.
            Thread.Sleep(3000);
            Debug.Assert(locker.LockResource(resourceId), "Should lock after expiration 3.");

            // Trying to lock a locked resource will fail.
            Debug.Assert(!locker.LockResource(resourceId), "Should not lock 2.");

            // Unlock resource
            locker.UnlockResource(resourceId);

            // Lock a resource async with default options
            Debug.Assert(await locker.LockResourceAsync(resourceId), "Should async lock 1.");

            // Unlock resource
            locker.UnlockResource(resourceId);

            // Lock a resource async with more options
            // Warning: expires is in seconds, retryDelayMs is in milliseconds
            Debug.Assert(
                await locker.LockResourceAsync(resourceId,expires:2,retryCount:2,retryDelayMs:100)
                , "Should async lock 2.");

            Console.WriteLine("Lock test ended successfully.");
        }

    }
}
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.1 1,002 12/8/2020
1.0.0 354 12/7/2020