У меня есть поток, который подключается к двум сетевым ресурсам. Каждый раз, когда я пытаюсь подключиться, для ответа может потребоваться 10 секунд.Возвращаемые значения из двух длинных методов, используя потоки
void MyThread()
{
//this takes ten seconds
Resource r1 = MySystem.GetResource(ipAddress1);
//this takes ten seconds
Resource r2 = MySystem.GetResource(ipAddress2);
//do stuff with ep1 and ep2
}
Общее время двадцать секунд, но я бы очень хотел, чтобы это займет всего десять секунд - Запуск потоков каждый раз, когда я называю GetResource, получив ответ, а затем присоединиться каждый поток вернуть управление.
Каков наилучший способ для этого? Запустить два потока, каждый из которых возвращает значение? Анонимные методы, которые ссылаются на локальные переменные? Моя голова кружится. Код приветствуется.
Мне тоже нравится. Я надеюсь, что сообщество поможет мне разобраться в лучшем подходе. – MedicineMan
Из любопытства возникла причина, по которой вы выбрали фоновое представление обо всех инициализациях? Из того, что я вижу, теперь у вас будут накладные расходы на два фоновых потока, в то время как основной поток простаивает и ждет их завершения. –
@ Jesse Squire: Это просто иллюстрация. Насколько мне известно, реальное приложение может иметь N ресурсов, где N> 2. В основном потоке могут быть другие вещи, которые он хочет сделать, прежде чем он будет 'Join'. –