Example #1
0
        public ManagedThread(ThreadManager manager, IManagedThread runnable, ILogger logger)
        {
            _internalFinished = false;

            _manager  = manager;
            _runnable = runnable;
            _logger   = logger;
            _thread   = new Thread(Run)
            {
                Name = runnable.Name
            };
        }
Example #2
0
        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;
 }