Semaphore using Azure Storage (based off of SemaphoreSlim)
v1.1.3 - Fixed bug in parsing expiration of queue items. Made non-executing queue items have expiration based off of reresh interval. Reduced executing job idle expiration to 2 minutes with it auto-refreshing every 1 minutes (was 10 minutes, refreshing every 5 minutes).
v1.1.2 - Fixed issue with expiration auto refresh.
v1.1.1 - Minor bug fixes.
v1.1.0 - Re-wrote locking in Wait() method to prevent hanging outside of waiting for a turn. Also added better timeouts and cleanup of abandonded SemaphoreAzureStorage Entries in the storage table.
v1.0.8 - Fixed issue where logger was not being passed. Also added better checking to JobQueue cleanup to prevent it from disposing too early.
v1.0.7 - Added logger parameter that can be passed to be used with the verbose messaging.
v1.0.6 - Fixed issue where removing old SemaphoreAzureStorage instances in the SyncJobQueue would attempt to modify the array inside of an enumeration.
v1.0.5 - Fixed issue where last item in queue would Monitor.Wait() when there are no other threads waiting.
v1.0.4 - Fixed issue where using SyncJobQueue would deadlock all waiting threads until timeout.
Added better cleanup checking of expired entries.
v1.0.3 - Made JobEntry constructors public,
Fixed CancellationToken on SemaphoreAzureStorage.Wait(TimeSpan timeout, CancellationToken token, out string entryId),
Added Wait() and Release() methods that do not require entry id maintainence. The entry ids are now stored and referenced from a ThreadLocal<> property of SemaphoreAzureStorage.
v1.0.2 - Added verbose flag, fixed possible hang on last item in queue.
v1.0.1 - Removed "Trace" calls.
v1.0.0 - Initial Release
- WindowsAzure.Storage (>= 6.2.0)