Я настраиваю службу очереди заданий и вам необходимо дросселировать потоки, а также ограничить срок службы работы в потоке, а не самой жизнью нити. Пожалуйста, не попадайте в мыльницу о том, насколько плох Thread.Abort(). Я тщательно рассмотрел последствия двух зол, и в моем случае это лучший выбор. Abort() никогда не может быть вызван, но если это произойдет, это будет необходимо. Я могу получить дросселирование и время жизни нити, чтобы работать со следующим кодом, но таймер запускается даже тогда, когда задание ожидает запуска из-за превышения порога дроссельной заслонки. Есть ли способ заставить таймер начать ТОЛЬКО, когда начинается задание, а не только поток?Дросселирование нити с таймером продолжительности жизни
Спасибо
Earl
var workerThread = new Thread(() =>
{
concurrencySemaphore.Wait();
try
{
consumerHelper.Execute(job, JobMessage, communicate);;
}
finally
{
concurrencySemaphore.Release();
}
});
var timeoutTimer = new System.Threading.Timer((s) =>
{
workerThread.Abort();
}, null, jobTimeSpan, TimeSpan.FromHours(12));
workerThread.Start();
Что мне нужно таймер, чтобы начать, когда работа фактически начинает работать, а не только тогда, когда поток начинает работать.