Я запускаю длинную операцию (обычно длинный запрос (SELECT) к базе данных).
Это может занять много времени, и я хочу добавить возможность остановить это действие.
Код выглядит так:
ThreadPool.QueueUserWorkItem(a => action.DoLongAction());
public void DoLongAction()
{
var sql = Tables.Where(el => el.Some == "XXX"); // dynamically constructed LINQ query to database
var result = db.Query(sql);
}
Я не могу использовать сигналы флагов, чтобы остановить эту тему. Потому что длительная операция не в моем коде, а в процессе работы с базой данных (запрос sql около 5 минут).
Как правильно остановить эту тему?
UPD1. Не простой SQL, но LINQ (EF4, BLToolkit)