using System; using System.Collections.Generic; using System.Text; using System.Threading; namespace Cosmos.GdbClient.BasicCommands { public abstract class CommandBase { private GdbController _controller; /// /// Gets the associated controller. /// public GdbController Controller { get { return _controller; } } private ManualResetEvent _done = new ManualResetEvent(false); /// /// Creates a new instance of the class. /// /// public CommandBase(GdbController controller) { _controller = controller; } public T Send() { _done.Reset(); Execute(); _done.WaitOne(); return _result; } protected abstract void Execute(); private T _result; protected void Done(T result) { _result = result; _done.Set(); } } }