в ASP.NET контроллере?
public async Task ProcessTask()
{
await Task.Delay(200);
_ = Task.Run(async () =>
{
const int defaultOrderId = 1;
using var scope = _serviceProvider.CreateScope();
var scopedOrdersDataService = scope.ServiceProvider.GetRequiredService<IOrdersDataService>();
ILogger<OrdersService> _logger = scope.ServiceProvider.GetRequiredService<ILogger<OrdersService>>();
try
{
var ordersUri = "https://localhost:7036".AppendPathSegments("api", "orders");
_logger.LogInformation("Saving data to API");
await ordersUri.PostJsonAsync(new OrderRequest()
{
Id = defaultOrderId,
Status = "super"
});
_logger.LogInformation(message: "Getting data from DB");
var orderFromDb = await GetOrderByIdAsync(defaultOrderId);
_logger.LogInformation(message: $"order.id={defaultOrderId} status={orderFromDb.Status}");
_logger.LogInformation("Saving data to DB");
await UpdateOrder(defaultOrderId, "super_2");
_logger.LogInformation(message: "Getting data from API");
var orderFromApi = await ordersUri.AppendPathSegment("1").GetJsonAsync<Order>();
_logger.LogInformation(message: $"order.id={defaultOrderId} status={orderFromApi.Status}");
}
catch (Exception ex)
{
_logger.LogError(ex, "error (");
}
});
}
При выполнение этого метода, обновление данных через await UpdateOrder(defaultOrderId, "super_2"); не происходит :(. Почему?
Потому что pastebin
понятия не имею что это...
Узнаете - пишите
типичное ЧСВ из мира DotNEt-a?
Нет, типичное самоуважение.
не, тут не в языке дело - читать невозможно просто
Типичная мания доколупания
можно нормально объяснить,а не калом кидаться
https://t.me/DotNetRuChat/704399
ну просто это вещь очевидная в себе - вы же после отправки видите, в каком виде сообщение отображается
Какой пункт был нарушен
Вот Вам лично как, удобно читать присланное?
да чо вы душните
моментальный эмодзи клоуна, сообщение отобразиться не успело
люди с телефонов сидят
1) Смотри логи, там кетч поймал 2) Код говно: a) У тебя в ASP NET есть контейнер зависимостей, контролеры могут с контруктора брать логгер б) Сделай это все в сервисы, зачем столько операций на метод навесил в) Зачем делей вообще?
Ты хочешь, чтобы тебе помогли . Так скинь норм код через Pastbin
Для дебага лучше юзай не логгер, а Debug.Write
Эту фразу сказать можно по разному. Мне такая помощь нахер не упала с предъявами, не устраивает проходи мимо, есть желаение помочь - помоги.
У тебя код в catch попадает?э
Ну с такой позицией тебе вряд-ли помогут
мне не помощь нужна, это гипотетическая ситуация
Ты сохранения не сохзранил)
Внимание, вопрос. Кто быстрее отработает - GCили таска, запущенная вникуда?))
т.е. там какой то race condition ?
Не совсем. Смотрите, Вы запускаете таску и не ожидаете её завершения. Нет никакой гарантии, что эту таску не грохнет как-либо GC (вроде как может, ибо таска висящая).
Вообще, зачем там Task.Run в принципе?
Пример обработки долгоиграющей операции
так ты верни таску эту а в хостед сервисе поэвейть
ну это правильный подход который я практикую, нужно обяснить почему так нельзя
Ты так запускаешь просто берешь поток из пула, который на первом же await пойдет обратно в пул
мне было бы не удобно листать логгер и смотреть информацию о дебаге, в дебаге все сухо, что написал то и видишь
Можно писать в логер который будет писать и в лог и в дебаг и куда еще нужно.
ну никто тебе не запрещает в логгер написать то, что хочешь и сконфигурить логгер так, чтобы он сыпал в консоль сообщения
Обсуждают сегодня