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; }