#c# #asp.net-core #controller
Вопрос:
Мне нужно вызвать из метода создания метод удаления для очистки. Я хочу позвонить DeleteDevice
, как ленивая очистка, и мне все равно, получится это или нет.
Люди предложили использовать этот способ:
DeleteDevice(param).ConfigureAwait(false);
Это безопасно?
public async Tasklt;ActionResultlt;Devicegt;gt; CreateDevice([FromBody] CreateDeviceRequest request) { if (!ModelState.IsValid) return BadRequest(ModelState); try { var registeredDevice = await RegisterDevice(request.DisplayName); bool isCreatePrinterSucceed = false; try { var updatedDevice = await UpdateDevice(registeredDevice.Id); isCreatePrinterSucceed = true; return Ok(new DeviceReference { DisplayName = request.DisplayName, Id = updatedDevice.Id }); } finally { if (!isCreatePrinterSucceed) { var param = new DeleteDeviceRequest() { Id = registeredDevice.Id, AzureUserBearerToken = request.AzureUserBearerToken }; DeleteDevice(param).ConfigureAwait(false); ; } } } catch (Exception ex) { return StatusCode((int)HttpStatusCode.InternalServerError, ex.Message); } }
Комментарии:
1. Не могли бы вы подробнее рассказать о том, чего вы здесь пытаетесь достичь и что вы подразумеваете под тем, безопасна ли операция?
2. Можете ли вы инкапсулировать этот метод удаления? Вызывайте его напрямую, когда вы им пользуетесь.
3. Если обновленное устройство выйдет из строя, я пытаюсь удалить незавершенное устройство . «безопасно» означает, что пользователь не увидит никаких побочных эффектов, даже если удаление не удастся и будут исключения.