Inheritance: IDisposable
Example #1
0
        private bool Process(uint id)
        {
            if (!_isWorking)
                return false;

            _semaphore.Wait();

            Requests request = new Requests(_address, id, _type == ParsingType.TypeByWoWHeadFilter);
            request.BeginGetResponse(RespCallback, request);
            return true;
        }
Example #2
0
        public void Start(ParsingType type)
        {
            if (_isWorking)
                throw new InvalidOperationException("_isWorking");

            _isWorking = true;
            _timeStart = DateTime.Now;

            switch (type)
            {
                case ParsingType.TypeBySingleValue:
                    {
                        _semaphore.Wait();

                        Requests request = new Requests(_address, _start);
                        request.Request.BeginGetResponse(RespCallback, request);
                        break;
                    }
                case ParsingType.TypeByMultipleValue:
                    {
                        for (uint entry = _start; entry <= _end; ++entry)
                        {
                            if (!_isWorking)
                                break;

                            _semaphore.Wait();

                            Requests request = new Requests(_address, entry);
                            request.Request.BeginGetResponse(RespCallback, request);
                        }
                        break;
                    }
                case ParsingType.TypeByList:
                    {
                        for (int i = 0; i < _entries.Count; ++i)
                        {
                            if (!_isWorking)
                                break;

                            _semaphore.Wait();

                            Requests request = new Requests(_address, _entries[i]);
                            request.Request.BeginGetResponse(RespCallback, request);
                        }
                        break;
                    }
                case ParsingType.TypeByWoWHeadFilter:
                    {
                        for (uint entry = 0; entry <= _start; ++entry)
                        {
                            if (!_isWorking)
                                break;

                            _semaphore.Wait();

                            Requests request = new Requests(_address, (entry * 200), ((entry + 1) * 200));
                            request.Request.BeginGetResponse(RespCallback, request);
                        }
                        break;
                    }
            }

            while (_semaphore.CurrentCount != SemaphoreCount)
            {
                Application.DoEvents();
            }

            if (type == ParsingType.TypeByList)
            {
                while (!_badIds.IsEmpty)
                {
                    if (!_isWorking)
                        break;

                    uint id;
                    if (!_badIds.TryDequeue(out id))
                        continue;

                    _semaphore.Wait();

                    Requests request = new Requests(_address, id);
                    request.Request.BeginGetResponse(RespCallback, request);
                }
            }

            while (_semaphore.CurrentCount != SemaphoreCount)
            {
                Application.DoEvents();
            }

            _timeEnd = DateTime.Now;
        }
Example #3
0
        public void Start(BackgroundWorker worker)
        {
            _background = worker;

            switch (_type)
            {
                case ParsingType.TypeSingle:
                    {
                        Requests request = new Requests(new Uri(string.Format("{0}{1}", _address, _entry)), _entry);
                        request.Request.BeginGetResponse(RespCallback, request);
                        break;
                    }
                case ParsingType.TypeMultiple:
                    {
                        for (_entry = _start; _entry < _end; ++_entry)
                        {
                            _semaphore.WaitOne();

                            Requests request = new Requests(new Uri(string.Format("{0}{1}", _address, _entry)), _entry);
                            {
                                _requests.Add(request);
                                request.Request.BeginGetResponse(RespCallback, request);
                            }
                        }
                        break;
                    }
                case ParsingType.TypeList:
                    {
                        for (int i = 0; i < _entries.Count; ++i)
                        {
                            _semaphore.WaitOne();

                            _entry = _entries[i];
                            Requests request = new Requests(new Uri(string.Format("{0}{1}", _address, _entry)), _entry);
                            {
                                _requests.Add(request);
                                request.Request.BeginGetResponse(RespCallback, request);
                            }
                        }
                        break;
                    }
            }

            Thread.Sleep(1000);
        }
Example #4
0
        void DownloadInitial(object sender, DoWorkEventArgs e)
        {
            switch (_type)
            {
                case ParsingType.TypeSingle:
                    {
                        Requests request = new Requests(new Uri(string.Format("{0}{1}", _address, _entry)), _entry);
                        request.Request.BeginGetResponse(RespCallback, request);
                        break;
                    }
                case ParsingType.TypeMultiple:
                    {
                        for (_entry = _start; _entry < _end; ++_entry)
                        {
                            _semaphore.WaitOne();

                            Requests request = new Requests(new Uri(string.Format("{0}{1}", _address, _entry)), _entry);
                            _requests.Add(request);
                            request.Request.BeginGetResponse(RespCallback, request);
                        }
                        break;
                    }
                case ParsingType.TypeList:
                    {
                        for (int i = 0; i < _entries.Count; ++i)
                        {
                            _semaphore.WaitOne();

                            _entry = (int)_entries[i];
                            Requests request = new Requests(new Uri(string.Format("{0}{1}", _address, _entry)), _entry);
                            _requests.Add(request);
                            request.Request.BeginGetResponse(RespCallback, request);
                        }
                        break;
                    }
            }
            Thread.Sleep(1000);
        }