A framework to easily create threads to run tasks Synchronously or Asynchronously.
To get started write a class that derives from AThreadTask. From there override the PerformTask(object parameter) method. In this method, write the code you would like to have ran in it's own thread. The value you return will be populated in the ReturnValue property of AThreadTask.
Synchronous threading will run all of the tasks in the queue when the Start() method has been called and block the main thread until all of the tasks have completed. Any tasks added after Start() has been called will need to have Start() called again.
Asynchronous threading will run all of the tasks in the queue and not block the main thread when Start() has been called. If you add tasks after Start(), they will be added to the queue and executed when a thread becomes available.
This package has no dependencies.