Как в многопотоке делать запросы с таймаутом?
Есть 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, но непонятно как выставить таймаут.