using System;
using System.Collections.Generic;
using System.Text;
namespace Systin.Library{
/// <summary>
/// This class is used to bundle data together for beginning to execute a new set of method calls on a new STA Thread apartment.
/// <seealso cref="SystinEngine"/>
/// </summary>
public sealed class ThreadWorkerMethodCall
{
#region Properties and Fields
private Queue<Instruction> mInstructions;
/// <summary>
/// Gets the instructions.
/// </summary>
/// <value>The instructions.</value>
public Queue<Instruction> Instructions
{
get { return mInstructions; }
}
private LanguageDriverClassManager mLanguageDriverClassManager;
/// <summary>
/// Gets the language driver class manager.
/// </summary>
/// <value>The language driver class manager.</value>
public LanguageDriverClassManager LanguageDriverClassManager
{
get { return mLanguageDriverClassManager; }
}
#endregion
#region Constructors
private ThreadWorkerMethodCall() { }
#endregion
#region Public Methods
/// <summary>
/// Creates a new <seealso cref="ThreadWorkerMethodCall"/> ThreadWorkerMethodCall object to work with.
/// </summary>
/// <param name="instructions">The instructions.</param>
/// <param name="ldcm">The LDCM.</param>
/// <returns><seealso cref="ThreadWorkerMethodCall"/> A ThreadWorkerMethodCall object</returns>
public static ThreadWorkerMethodCall Factory(Queue<Instruction> instructions, ref LanguageDriverClassManager ldcm)
{
//If any of the parameters are null then throw an argument null exception
if (instructions == null || ldcm == null)
{
throw new ArgumentNullException("One or more arguments are null");
}
//Create a new tworker object and copy the input parms to it
ThreadWorkerMethodCall tworker = new ThreadWorkerMethodCall();
tworker.mInstructions = instructions;
tworker.mLanguageDriverClassManager = ldcm;
return tworker;
}
#endregion
}
}
|