void func(object list_params)//Функция потока, передаем параметр { int limit = ((List <int>)list_params)[0]; int offset = ((List <int>)list_params)[1]; try { DBConection db = new DBConection(); int count = db.count(); Google google = new Google("http://google.ru", MODE); while (offset < count) { foreach (DBKeyword k in db.list(offset, limit)) { Console.WriteLine("Выбираем словосочетание из БД=" + k.keyword + "[" + k.keyword_id + "] offset=" + offset + " limit=" + limit); Console.WriteLine("Обращаемся к гуглу"); //открываем настройки и ставим регион google.open_settings(); //тут выбираем из базы слова и в цикле по очереди вызываем метод поиска google.search(k.keyword, k.keyword_id); } offset += STEP; MyIni.Write("offset_google_" + this.threadId, "" + offset); } google.exit(); } catch {} }
static void Main(string[] args) { int offset = 0; int limit = STEP; int threadsCount = 3; DBConection db = new DBConection(); int count = db.count(); int offsetStepByThread = (int)(count / threadsCount); var MyIni = new IniFiles("Settings.ini"); threadsCount = !MyIni.KeyExists("thread_count") ? Int32.Parse(MyIni.Write("thread_count", "" + threadsCount)): Int32.Parse(MyIni.Read("thread_count")); Console.WriteLine("Потоков: {0} , смещение в бд для 1 потока {1}", threadsCount, offsetStepByThread); Console.ReadKey(); for (int i = 0; i < threadsCount; i++) { offset = !MyIni.KeyExists("offset_yandex_" + i) ? Int32.Parse(MyIni.Write("offset_yandex_" + i, "" + (offsetStepByThread * i))) : Int32.Parse(MyIni.Read("offset_yandex_" + i)); limit = !MyIni.KeyExists("limit_yandex_" + i) ? Int32.Parse(MyIni.Write("limit_yandex_" + i, "" + STEP)) : Int32.Parse(MyIni.Read("limit_yandex_" + i)); Console.WriteLine("id={0} limit=>{1} offset=>{2}", i, limit, offset); YandexThreader yThread = new YandexThreader(i, limit, offset); //offset = !MyIni.KeyExists("offset_google_" + i) ? // Int32.Parse(MyIni.Write("offset_google_" + i, "" + (threadsCount * i))) : // Int32.Parse(MyIni.Read("offset_google_" + i)); //limit = !MyIni.KeyExists("limit_google_" + i) ? // Int32.Parse(MyIni.Write("limit_google_" + i, "" + STEP)) : // Int32.Parse(MyIni.Read("limit_google_" + i)); //GoogleThreader gThread = new GoogleThreader(i, limit, offset); //Console.WriteLine("test limit=>{0} offset=>{1}", limit, offset); } Console.ReadKey(); //закрываем окно Environment.Exit(0); }
void func(object list_params)//Функция потока, передаем параметр { int limit = ((List <int>)list_params)[0]; int offset = ((List <int>)list_params)[1]; try { //mut.WaitOne(); DBConection db = new DBConection(); int count = db.count(); Yandex yandex = new Yandex("https://yandex.ru", MODE); if (!yandex.isValidRegion("Москва")) { yandex.open_settings(); } yandex.change_search_pos_count(); // mut.ReleaseMutex(); while (offset < count) { foreach (DBKeyword k in db.list(offset, limit)) { Console.WriteLine("Выбираем словосочетание из БД=" + k.keyword + "[" + k.keyword_id + "] offset=" + offset + " limit=" + limit); Console.WriteLine("Обращаемся к яндексу"); //тут выбираем из базы слова и в цикле по очереди вызываем метод поиска // mut.WaitOne(); yandex.search(k.keyword, k.keyword_id); // mut.ReleaseMutex(); } offset += STEP; MyIni.Write("offset_yandex_" + this.threadId, "" + offset); } yandex.exit(); } catch { } }