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