44 lines
1.0 KiB
C#
44 lines
1.0 KiB
C#
|
|
using System.Collections.Generic;
|
||
|
|
using Codice.Client.Common.Threading;
|
||
|
|
|
||
|
|
namespace Unity.PlasticSCM.Editor.UI
|
||
|
|
{
|
||
|
|
internal static class ThreadWaiterRegistry
|
||
|
|
{
|
||
|
|
internal static void Register(IThreadWaiter waiter)
|
||
|
|
{
|
||
|
|
lock (mLock)
|
||
|
|
{
|
||
|
|
mRunningWaiters.Add(waiter);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static void Unregister(IThreadWaiter waiter)
|
||
|
|
{
|
||
|
|
lock (mLock)
|
||
|
|
{
|
||
|
|
mRunningWaiters.Remove(waiter);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static bool HasRunningOperations()
|
||
|
|
{
|
||
|
|
lock (mLock)
|
||
|
|
{
|
||
|
|
return mRunningWaiters.Count > 0;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static int GetRunningOperationsCount()
|
||
|
|
{
|
||
|
|
lock (mLock)
|
||
|
|
{
|
||
|
|
return mRunningWaiters.Count;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static readonly object mLock = new object();
|
||
|
|
static readonly HashSet<IThreadWaiter> mRunningWaiters = new HashSet<IThreadWaiter>();
|
||
|
|
}
|
||
|
|
}
|