MadLock_MadLord 1.0.1

Install-Package MadLock_MadLord -Version 1.0.1
dotnet add package MadLock_MadLord --version 1.0.1
<PackageReference Include="MadLock_MadLord" Version="1.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MadLock_MadLord --version 1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: MadLock_MadLord, 1.0.1"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. 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.1

// Install MadLock_MadLord as a Cake Tool
#tool nuget:?package=MadLock_MadLord&version=1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

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.");
        }

    }
}

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 370 12/8/2020
1.0.0 159 12/7/2020