|
using System;
using Amib.Threading;
namespace Examples
{
/// <summary>
/// Summary description for ExceptionsExample.
/// </summary>
public class ExceptionsExample
{
private class DivArgs
{
public int x;
public int y;
}
public bool TestExceptionThrowing()
{
bool success = false;
SmartThreadPool _smartThreadPool = new SmartThreadPool();
DivArgs divArgs = new DivArgs();
divArgs.x = 10;
divArgs.y = 0;
IWorkItemResult wir =
_smartThreadPool.QueueWorkItem(new WorkItemCallback(this.DoDiv), divArgs);
try
{
int result = (int)wir.GetResult();
}
catch (DivideByZeroException e)
{
e = e;
success = true;
}
return success;
}
public bool TestExceptionReturning()
{
bool success = true;
SmartThreadPool _smartThreadPool = new SmartThreadPool();
DivArgs divArgs = new DivArgs();
divArgs.x = 10;
divArgs.y = 0;
IWorkItemResult wir =
_smartThreadPool.QueueWorkItem(new WorkItemCallback(this.DoDiv), divArgs);
Exception e = null;
try
{
object result = wir.GetResult(out e);
}
catch (Exception ex)
{
ex = ex;
success = false;
}
if(!(e is DivideByZeroException))
{
success = false;
}
return success;
}
private object DoDiv(object state)
{
DivArgs divArgs = (DivArgs)state;
return (divArgs.x / divArgs.y);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
B.Sc. in Computer Science.
Works as Software Developer.