public void StartPool(Int32 vuIndex, Int32 sbuIndex)
        {
            String pID = vuIndex.ToString() + "-" + sbuIndex.ToString();

            if ((_EnableDebug) && (OnDebugEvent != null))
            {
                OnDebugEvent("0", "Start> Add pool (" + vuIndex + "," + sbuIndex + ") " + pID);
            }

            this._pool.Add(pID, new Thread(new ParameterizedThreadStart(StartThread)));

            lock (this.virtualUsers)
            {
                this.virtualUsers.Add(vuIndex);
            }
            lock (this.connections)
            {
                this.connections.Add(pID);
            }

            if (this._pool.ContainsKey(pID))
            {
                ConnThreadStart oStart = new ConnThreadStart();
                oStart.virtualUser     = vuIndex;
                oStart.connectionIndex = sbuIndex;

                this._pool[pID].Start(oStart);
                Thread.Sleep(50);
            }
        }
        private void StartThread(Object oStart)
        {
            ConnThreadStart start = (ConnThreadStart)oStart;
            String          pID   = start.virtualUser.ToString() + "-" + start.connectionIndex.ToString();

            if ((_EnableDebug) && (OnDebugEvent != null))
            {
                OnDebugEvent(start.ToString(), "StartThread> " + start.virtualUser + ":" + start.connectionIndex);
            }

            //Uri[] uris = environment.Uris.ToArray();

            while (_running)
            {
                foreach (UriInfo u in environment.Uris)
                {
                    lock (this.connections)
                    {
                        this.connections.Add(pID);
                    }
                    ResultData request = Request.GetRequest(u.Target, environment.Proxy, environment.HTTPHeaders);
                    this.connections.Remove(pID);

                    try
                    {
                        Array.Clear(request.Data, 0, request.Data.Length);
                        request.Data = null;
                    }
                    catch { }

                    if (OnResultReceived != null)
                    {
                        OnResultReceived(DateTime.Now, request);
                    }


                    Thread.Sleep(100 + this._SleepTimer);
                }

                Thread.Sleep(500);
            }

            //uris = null;
        }