Как в многопотоке делать запросы с таймаутом?

Есть 10 пар логин-паролей. Хочу зайти в личные кабинеты разных сайтов и забрать оттуда текущий баланс. Всю инфу храню в sqlite, кроме баланса. Баланс отображаю в datagridview введите сюда описание изображения

У каждого провайдера есть свое ограничение по подключению. То есть не могу чаще чем n-секунд подключаться. Поэтому синхронный вариант отпадает.

var db = new SQLiteConnection("MyData.db");
var items = db.Table<DB>().ToList();
for (int i = 0; i < items.Count-1; i++)
    {
        if (items[i].Provider == "мтс")
            {
                var balance = new Mts().GetBalance(items[i].Login, items[i].Password);
                items[i].Balance = Convert.ToDecimal(balance);
                db.Update(items[i]);
            
                Thread.Sleep(items[i].AutoCheckTime * 60);
                LoadDBToGrid();
            }
        }
        if (items[i].Provider == "биллайн")
            {
                var balance = new Beeline().GetBalance(items[i].Login, items[i].Password);
                items[i].Balance = Convert.ToDecimal(balance);
                db.Update(items[i]);
            
                Thread.Sleep(items[i].AutoCheckTime * 60);
                LoadDBToGrid();
            }
        }
        
    }

Думал запускать тупо в Thread, но непонятно как выставить таймаут.


Ответы (0 шт):