示例#1
0
            public PoolWorker(DedicatedThreadPool pool, int workerId)
            {
                _pool       = pool;
                _threadExit = new TaskCompletionSource <object>();

#if UNSAFE_THREADING
                var thread = new Thread(RunThread, pool.Settings.ThreadMaxStackSize);
#else
                var thread = new Thread(RunThread);
#endif

                thread.IsBackground = pool.Settings.ThreadType == ThreadType.Background;

                if (pool.Settings.Name != null)
                {
                    thread.Name = string.Format("{0}_{1}", pool.Settings.Name, workerId);
                }

#if UNSAFE_THREADING
                if (pool.Settings.ApartmentState != ApartmentState.Unknown)
                {
                    thread.SetApartmentState(pool.Settings.ApartmentState);
                }
#endif

                thread.Start();
            }
示例#2
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="pool">TBD</param>
 public DedicatedThreadPoolTaskScheduler(DedicatedThreadPool pool)
 {
     _pool = pool;
 }