У меня есть веб-страница, которая имеет форму для добавления устройств.C# - Как обновить веб-страницу после вызова метода асинхронного вызова?
Когда пользователь добавляет устройство, устройство зарегистрировано в 4 разных местах. Поскольку каждая из этих 4 регистраций требует времени, я решил использовать асинхронные вызовы.
Итак, когда пользователь нажимает кнопку сохранения, на сервер запускается запрос AJAx и вызывается метод «Сохранить». Метод «Сохранить» имеет цикл с асинхронным вызовом метода «Register», как это:
public delegate bool DeviceControllerAsync(...);
public static string Save(...)
{
//Get all active controllers
List<Controller> lstControllers = Controller.Get();
foreach (Controller controller in lstControllers)
{
// Invoke asynchronous write method
DeviceControllerAsync caller = new DeviceControllerAsync(ArubaBL.RegisterDevice);
// Initiate the asychronous call.
IAsyncResult result = caller.BeginInvoke(..., null, null);
}
return GetRegisteredDevices();
}
Проблема здесь состоит в том, что «GetRegisteredDevices» вызов не имеет смысла, потому что методы не имеют асинхронные законченный но не будет никаких устройств для возврата. Кроме того, я не могу обновить пользовательский интерфейс, когда эти действия закончатся, потому что основной метод уже возвращен в пользовательский интерфейс.
(я игнорирую дело здесь, если пользователь перемещает другую страницу сразу после нажатия на кнопку «Сохранить».)
Итак, есть ли способ для меня, чтобы знать, когда все асинхронные звонков закончены и затем вызывать метод, который будет обновлять пользовательский интерфейс?
Можете ли вы перейти на TPL вместо старого стиля begin/endinvoke? – caesay
[this] (http://stackoverflow.com/questions/26069487/async-and-await-with-for-loop) может помочь – LiranBo
Я мог бы перейти на TPL, если бы знал, что это такое ... Что такое TPL ??? –