diff --git a/STPTests/TestExceptions.cs b/STPTests/TestExceptions.cs index 4c70c1f..e58e35c 100644 --- a/STPTests/TestExceptions.cs +++ b/STPTests/TestExceptions.cs @@ -75,13 +75,31 @@ namespace SmartThreadPoolTests Assert.IsTrue(success); Assert.IsTrue(e is DivideByZeroException); - } - - private object DoDiv(object state) - { - DivArgs divArgs = (DivArgs)state; - return (divArgs.x / divArgs.y); } + private object DoDiv(object state) + { + DivArgs divArgs = (DivArgs)state; + return (divArgs.x / divArgs.y); + } + + [Test] + public void ExceptionType() + { + SmartThreadPool smartThreadPool = new SmartThreadPool(); + + var workItemResult = smartThreadPool.QueueWorkItem(new Func(ExceptionMethod)); + + smartThreadPool.WaitForIdle(); + + Assert.IsInstanceOf(workItemResult.Exception); + + smartThreadPool.Shutdown(); + } + + public int ExceptionMethod() + { + throw new NotImplementedException(); + } } } diff --git a/SmartThreadPool/WorkItemResultTWrapper.cs b/SmartThreadPool/WorkItemResultTWrapper.cs index d1eff95..fbd0c8b 100644 --- a/SmartThreadPool/WorkItemResultTWrapper.cs +++ b/SmartThreadPool/WorkItemResultTWrapper.cs @@ -103,7 +103,7 @@ namespace Amib.Threading.Internal public object Exception { - get { return (TResult)_workItemResult.Exception; } + get { return _workItemResult.Exception; } } #region IInternalWorkItemResult Members