From d47c88c77efbdcfedf1375898b9e67b8b3f2e05b Mon Sep 17 00:00:00 2001 From: Latif Khalifa Date: Fri, 19 Jul 2013 10:43:38 +0200 Subject: [PATCH] Use SmartThreadPool on Mono only, Windows system thread pool works fine --- OpenMetaverse/GridClient.cs | 7 +++++-- OpenMetaverseTypes/WorkPool.cs | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/OpenMetaverse/GridClient.cs b/OpenMetaverse/GridClient.cs index f17e7b47..c7d280c8 100644 --- a/OpenMetaverse/GridClient.cs +++ b/OpenMetaverse/GridClient.cs @@ -108,8 +108,11 @@ namespace OpenMetaverse /// public GridClient() { - // Initialise ThreadPool - WorkPool.Init(true); + // Initialise SmartThreadPool when using mono + if (Type.GetType("Mono.Runtime") != null) + { + WorkPool.Init(true); + } // These are order-dependant Network = new NetworkManager(this); diff --git a/OpenMetaverseTypes/WorkPool.cs b/OpenMetaverseTypes/WorkPool.cs index 6b64cda4..66bf09c8 100644 --- a/OpenMetaverseTypes/WorkPool.cs +++ b/OpenMetaverseTypes/WorkPool.cs @@ -62,8 +62,11 @@ namespace OpenMetaverse public static void Shutdown() { - Pool.Shutdown(); - Pool = null; + if (Pool != null) + { + Pool.Shutdown(); + Pool = null; + } } public static void QueueUserWorkItem(System.Threading.WaitCallback callback)