From b0d194c931c431536c19e1fd13dd0eddbc5563fc Mon Sep 17 00:00:00 2001 From: James South Date: Thu, 17 Jul 2014 13:00:14 +0100 Subject: [PATCH] Better Semaphore fix Former-commit-id: c679e15305cade71e0fec7d3db7f0eab41224741 --- .../HttpModules/ImageProcessingModule.cs | 35 +++++++------------ .../Imaging/Formats/GifFormat.cs | 2 +- .../NET45/Test_Website_NET45/Web.config | 8 ++--- 3 files changed, 17 insertions(+), 28 deletions(-) diff --git a/src/ImageProcessor.Web/NET45/HttpModules/ImageProcessingModule.cs b/src/ImageProcessor.Web/NET45/HttpModules/ImageProcessingModule.cs index a91d6e07a..d93f8ab77 100644 --- a/src/ImageProcessor.Web/NET45/HttpModules/ImageProcessingModule.cs +++ b/src/ImageProcessor.Web/NET45/HttpModules/ImageProcessingModule.cs @@ -385,16 +385,14 @@ namespace ImageProcessor.Web.HttpModules if (isRemote) { SemaphoreSlim semaphore = GetSemaphoreSlim(cachedPath); +#if NET45 + await semaphore.WaitAsync(); +#else + semaphore.Wait(); +#endif try { - // This should not happen :( - if (semaphore != null) - { - semaphore.Wait(); - } - Uri uri = new Uri(requestPath + "?" + urlParameters); - RemoteFile remoteFile = new RemoteFile(uri, false); // Prevent response blocking. @@ -433,24 +431,19 @@ namespace ImageProcessor.Web.HttpModules } finally { - // This should not happen :( - if (semaphore != null) - { - semaphore.Release(); - } + semaphore.Release(); } } else { SemaphoreSlim semaphore = GetSemaphoreSlim(cachedPath); +#if NET45 + await semaphore.WaitAsync(); +#else + semaphore.Wait(); +#endif try { - // This should not happen :( - if (semaphore != null) - { - semaphore.Wait(); - } - // Check to see if the file exists. // ReSharper disable once AssignNullToNotNullAttribute FileInfo fileInfo = new FileInfo(requestPath); @@ -476,11 +469,7 @@ namespace ImageProcessor.Web.HttpModules } finally { - // This should not happen :( - if (semaphore != null) - { - semaphore.Release(); - } + semaphore.Release(); } } } diff --git a/src/ImageProcessor/Imaging/Formats/GifFormat.cs b/src/ImageProcessor/Imaging/Formats/GifFormat.cs index 83904225b..dffccb99b 100644 --- a/src/ImageProcessor/Imaging/Formats/GifFormat.cs +++ b/src/ImageProcessor/Imaging/Formats/GifFormat.cs @@ -86,7 +86,7 @@ namespace ImageProcessor.Imaging.Formats foreach (GifFrame frame in info.GifFrames) { factory.Image = frame.Image; - frame.Image = quantizer.Quantize(processor.Invoke(factory)); + frame.Image = quantizer.Quantize(processor.Invoke(factory)); encoder.AddFrame(frame); } } diff --git a/src/TestWebsites/NET45/Test_Website_NET45/Web.config b/src/TestWebsites/NET45/Test_Website_NET45/Web.config index 67e336777..8cfc303d3 100644 --- a/src/TestWebsites/NET45/Test_Website_NET45/Web.config +++ b/src/TestWebsites/NET45/Test_Website_NET45/Web.config @@ -6,17 +6,17 @@ - + - +