예제 #1
0
        public IThread CreateThread(IRuntime runtime, string name, Action <Action> dispatchMethod)
        {
            lock (_lock)
            {
                if (String.IsNullOrWhiteSpace(name))
                {
                    throw new ArgumentNullException(name);
                }
                if (_threadsByName.ContainsKey(name))
                {
                    throw new ArgumentException("Thread already exists: " + name);
                }
                IThread thread;
                if (dispatchMethod == null)
                {
                    thread = new RuntimeThread(name, runtime, _logger, _errorHandler);
                }
                else
                {
                    thread = new ExternalThread(name, runtime, _logger, _errorHandler, dispatchMethod);
                }

                _threadsByName.Add(name, thread);
                return(thread);
            }
        }
예제 #2
0
        public IThread CreateThread(IRuntime runtime, string name, Action<Action> dispatchMethod)
        {
            lock (_lock)
            {
                if (String.IsNullOrWhiteSpace(name))
                {
                    throw new ArgumentNullException(name);
                }
                if (_threadsByName.ContainsKey(name))
                {
                    throw new ArgumentException("Thread already exists: " + name);
                }
                IThread thread;
                if (dispatchMethod == null)
                {
                    thread = new RuntimeThread(name, runtime, _logger, _errorHandler);
                }
                else
                {
                    thread = new ExternalThread(name, runtime, _logger, _errorHandler, dispatchMethod);
                }

                _threadsByName.Add(name, thread);
                return thread;
            }
        }