public void Start(int priority) { if (m_ExecutionThread != null) { throw new InvalidOperationException("This active object is already started. The Start method can only be invoked once."); } // Note: We use the datatype int for the priority since uint is not CLS compliant if (priority < 0) { throw new ArgumentException("The priority of an Active Object cannot be negative.", "priority"); } m_Priority = priority; // TODO: Leverage the priority m_ExecutionThread = Threading.ThreadFactory.GetThread(0, new ThreadStart(this.DoEventLoop)); m_ExecutionThread.Start(); }