@anonymouss

Как правильно вызвать ThreadPool и в него поместить метод?

Есть метод типа void который принимает лист
private void add(List<Data> Data)
        {
            var loaddata = new LoadData();
            loaddata.add(Data);
        }

я делаю вот так через Task
void SomeMethod() {
      
            new Task(() =>
            {
                add(DataList);
            }).Start();
}

Как мне сделать то же самое только через ThreadPool?
Что-то как-то не получается
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 3
petermzg
@petermzg
Самый лучший программист
Все асинхронные операции, где задействован Task, выполняются в ThreadPool.
ThreadPool - может быть только один на приложение.
"Как мне сделать то же самое только через ThreadPool?" - вы его уже используете.
Ответ написан
Комментировать
@marssx
давно с ним не работал, но что то типо этого должно работать
ThreadPool.QueueUserWorkItem(new WaitCallback(add), DataList);
Ответ написан
@OwDafuq
Используйте конструкции async-await. Прямое обращение к Thread & ThreadPoll немного устарело с выходом .Net 4.5.
async void Add(List<Data> Data)
{
	await Task.Run(() => 
	{
		var loaddata = new LoadData();
		loaddata.add(Data);
	});
}

Можно вызвать
Add(new List<Data>());
и он сработает асинхронно.

А можно вместо void написать Task (если ничего не нужно возвращать) и можно будет ждать выполнение метода.
async Task Add(List<Data> Data)
{
	await Task.Run(() => 
	{
		var loaddata = new LoadData();
		loaddata.add(Data);
	});
}


И вызывать:
await Add(new List<Data>());
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы