public void Process(DBH dbh, DatabaseManager dbmanager, WebClient client) { Console.WriteLine("Processing member {0}", Id); Status = STATUS_DONE; try { client.Encoding = SearchEngineManager.GetEncoding(EngineId); //WebClient client = SearchEngineManager.PrepareWebClient(EngineId); content = client.DownloadString(Url); switch (TaskType) { case TASKTYPE_SEARCH: SearchItem[] slist = SearchEngineManager.ExtractSearchItems(this); dbmanager.InsertApprovalItems(dbh, this, slist); break; case TASKTYPE_UPDATE_INFO: PriceInfo pi = SearchEngineManager.ExtractPriceInfo(this); dbmanager.InsertPriceInfo(ProductId, EngineId, pi); break; } } catch { Console.WriteLine("Member {0} failed", Id); Status = Errors++ == Member.ERROR_LIMIT ? STATUS_FAILED : STATUS_NEW; } // update the member's status dbh.ExecuteStoreCommand("update WebTask set Status={0}, Errors={1} where Id={2}", Status, Errors, Id); dbh.SaveChanges(); }
void Init() { Console.WriteLine("Initializig Controller in background"); CancellationToken token = cancelFactory.Token; // create an instance of database manager token.ThrowIfCancellationRequested(); dbmanager = new DatabaseManager(db_path); // initialize search engines token.ThrowIfCancellationRequested(); SearchEngine[] engines = SearchEngineManager.GetAllEngines(); dbmanager.SyncEngines(engines, token); token.ThrowIfCancellationRequested(); initialized = true; }