public void Evaluate(int spreadMax)
        {
            FResponseOut.SliceCount   = spreadMax;
            FFailOut.SliceCount       = spreadMax;
            FSuccessOut.SliceCount    = spreadMax;
            FStatusCodeOut.SliceCount = spreadMax;
            FActiveOut.SliceCount     = spreadMax;
            FElaspeTimeOut.SliceCount = spreadMax;


            #region Make a async request

            if (FSendRequestIn.IsChanged)
            {
                for (int i = 0; i < spreadMax; i++)
                {
                    if (FSendRequestIn[i])
                    {
                        if (FThreadList.ContainsKey(i))
                        {
                            BackgroundWorker worker;
                            RequestState     requestStateDelete;
                            FThreadList.TryGetValue(i, out worker);
                            FRequestStateList.TryGetValue(i, out requestStateDelete);

                            if (requestStateDelete != null)
                            {
                                requestStateDelete.Request.Abort();
                                requestStateDelete.ManualResetEvent.Set();
                            }
                            if (worker != null)
                            {
                                worker.CancelAsync();
                            }

                            FThreadList.Remove(i);
                            FRequestStateList.Remove(i);
                        }

                        RequestState requestState;
                        using (var worker = new BackgroundWorker())
                        {
                            worker.DoWork             += HandlerDoWork;
                            worker.RunWorkerCompleted += HandlerRunWorkerCompleted;

                            worker.WorkerSupportsCancellation = true;

                            requestState = new RequestState
                            {
                                Accept        = FAcceptIn[i],
                                Content       = FContentIn[i],
                                RequestMethod = FRequestMethodIn[i],
                                ContentType   = FContentTypeIn[i],
                                Url           = FUrlIn[i],
                                Timeout       = FTimoutIn[i],
                                SliceId       = i
                            };

                            var headers       = FHeaderIn[i];
                            var headersValues = FHeaderValueIn[i];

                            for (int j = 0; j < headers.SliceCount; j++)
                            {
                                requestState.Headers.Add(headers[i], headersValues[i]);
                            }

                            worker.RunWorkerAsync(requestState);
                            FActiveOut[i] = true;
                            FThreadList.Add(i, worker);
                        }

                        FRequestStateList.Add(i, requestState);
                    }
                }
            }

            #endregion

            for (int i = 0; i < spreadMax; i++)
            {
                FSuccessOut[i] = false;
                FFailOut[i]    = false;
            }
        }
        public void Evaluate(int spreadMax)
        {
            FResponseOut.SliceCount = spreadMax;
            FFailOut.SliceCount = spreadMax;
            FSuccessOut.SliceCount = spreadMax;
            FStatusCodeOut.SliceCount = spreadMax;
            FActiveOut.SliceCount = spreadMax;
            FElaspeTimeOut.SliceCount = spreadMax;


            #region Make a async request

            if (FSendRequestIn.IsChanged)
            {
                for (int i = 0; i < spreadMax; i++)
                {
                    if (FSendRequestIn[i])
                    {

                        if (FThreadList.ContainsKey(i))
                        {

                            BackgroundWorker worker;
                            RequestState requestStateDelete;
                            FThreadList.TryGetValue(i, out worker);
                            FRequestStateList.TryGetValue(i, out requestStateDelete);

                            if (requestStateDelete != null)
                            {
                                requestStateDelete.Request.Abort();
                                requestStateDelete.ManualResetEvent.Set();
                            }
                            if (worker != null) worker.CancelAsync();

                            FThreadList.Remove(i);
                            FRequestStateList.Remove(i);
                        }

                        RequestState requestState;
                        using (var worker = new BackgroundWorker())
                        {
                            worker.DoWork += HandlerDoWork;
                            worker.RunWorkerCompleted += HandlerRunWorkerCompleted;

                            worker.WorkerSupportsCancellation = true;

                            requestState = new RequestState
                                {
                                    Accept = FAcceptIn[i],
                                    Content = FContentIn[i],
                                    RequestMethod = FRequestMethodIn[i],
                                    ContentType = FContentTypeIn[i],
                                    Url = FUrlIn[i],
                                    Timeout = FTimoutIn[i],
                                    SliceId = i
                                };

                            var headers = FHeaderIn[i];
                            var headersValues = FHeaderValueIn[i];

                            for (int j = 0; j < headers.SliceCount; j++)
                            {
                                requestState.Headers.Add(headers[i], headersValues[i]); 
                            }

                            worker.RunWorkerAsync(requestState);
                            FActiveOut[i] = true;
                            FThreadList.Add(i, worker);
                        }

                        FRequestStateList.Add(i, requestState);
                    }
                }
            }

            #endregion

            for (int i = 0; i < spreadMax; i++)
            {
                FSuccessOut[i] = false;
                FFailOut[i] = false;
            }
        }