public ManagedThread(ThreadManager manager, IManagedThread runnable, ILogger logger) { _internalFinished = false; _manager = manager; _runnable = runnable; _logger = logger; _thread = new Thread(Run) { Name = runnable.Name }; }
public IManagedThreadHandle Start(IManagedThread thread) { lock (_lock) { if (_threads.Any(x => x.Runnable == thread)) { throw new InvalidOperationException("Runnable already running"); } var newThread = new ManagedThread(this, thread, _logger); newThread.Start(); _threads.Add(newThread); return(newThread); } }
private void StopThread(ref IManagedThread thread) { thread?.Stop(); thread = null; }