1
Я работаю над обработкой на основе тяжелой нити, и каждая задача запускается только через 10 секунд. Я стремился повысить производительность, поэтому вам нужно некоторое предложение, как улучшить код ниже.Обработка параллельных потоков в C#
public void StartAllListerner()
{
foreach (tblUserMaster item in tblUserMasterBL.Instance.GetMany(new dbEntities()))
{
StartListenerProcess(item.ShoretelUserId, item.UserDN);
}
}
public void StartListenerProcess()
{
Task.Run(() =>
{
TrackIncomingRequest();
});
}
public void TrackIncomingRequest()
{
do
{
if(current thread gets event)
{
foreach(var item in allEvents)
{
// Some unending heavy activity, which is running continuously in background
}
}
} while (true);
}
Основываясь на текущей кодовой базе, обработка происходит только тогда, когда поток получает какое-то событие, иначе его просто постоянно ждет события.
Итак, как мы можем запускать параллельную задачу в C#?
Зачем вам нужно распараллелить _creation_ задач? Если вы используете разделитель, используемый 'Parallel.ForEach', использование его напрямую будет немного яснее. – Haukinger
Я бы предложил задать этот вопрос в обмене стека кода: http://codereview.stackexchange.com/, где вы можете спросить людей, как лучше всего оптимизировать ваш код :) –
Почему вы используете 'Task.Run' в 'StartListenerProcess'? 'Parallel.ForEach' уже дал ему поток. Вам действительно нужна новая «Задача»? – smoksnes