Мое приложение делает много фоновых задач, и для каждого такого действия, я создал новый поток для каждого действиядействия в одном потоке
Thread StreamResponse = new Thread(() =>
{
DB.ToDb(flag);
});
StreamResponse.Start();
Эти действия происходят тысячи в минуту. Заметил, что приложение начинает есть RAM. Это нормально, потому что приложение создает тысячи потоков и не закрывает их.
Отсюда возникает вопрос, как это сделать, чтобы эти действия были в отдельном потоке. Например, я создаю поток в отдельном классе и в этом потоке действует commit.
Или иначе? Задача, созданная потоком, и после завершения действия автоматически закрывается. Но, возможно, более правильно все эти шаги нужно сделать в другом потоке. Как вы думаете? Как сделать?
Возможно использование Dispatcher.BeginInvoke
?
грузоотправитель только для UI потоке, то есть материал, который происходит на элементы пользовательского интерфейса кнопки, как. Пожалуйста, прочитайте о TPL, и вы можете использовать wait, asnyc и Task.run() – Gilad
Вы имеете в виду, 'var worker = new Worker(); Thread t = new Thread (() => worker.DoWork(); t.IsBackground = true; t.Start(); '? –
Я бы посмотрел на использование пула потоков, а не на создание« тысяч потоков ». (TPL и async/await). –