[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/tgoessler/TCSystemCS/develop/Thread/SemaphoreSlimExt.cs [Back]  [Original]

// *******************************************************************************
// 
//  *******   ***   ***               *
//     *     *     *                  *
//     *    *      *                *****
//     *    *       ***  *   *   **   *    **    ***
//     *    *          *  * *   *     *   ****  * * *
//     *     *         *   *      *   * * *     * * *
//     *      ***   ***    *     **   **   **   *   *
//                         *
// *******************************************************************************
//  see https://github.com/tgoessler/TCSystemCS for details.
//  Copyright (C) 2003 - 2026 Thomas Goessler. All Rights Reserved.
// *******************************************************************************
// 
//  TCSystem is the legal property of its developers.
//  Please refer to the COPYRIGHT file distributed with this source distribution.
// 
// *******************************************************************************

#region Usings

using System;
using System.Threading;
using System.Threading.Tasks;

#endregion

namespace TCSystem.Thread;

/// Provides disposable lock scopes for .
public static class SemaphoreSlimExt
{
#region Public

    /// Waits for the semaphore and returns a scope that releases it when disposed.
    public static IDisposable Lock(this SemaphoreSlim semaphore)
    {
        semaphore.Wait();
        return new SemaphoreSlimLock(semaphore);
    }

    /// Asynchronously waits for the semaphore and returns a scope that releases it when disposed.
    public static async Task LockAsync(this SemaphoreSlim semaphore)
    {
        await semaphore.WaitAsync();
        return new SemaphoreSlimLock(semaphore);
    }

#endregion
}

Web Proxy Viewer  |  New URL  |  Original Page