task {
let! _ = botClient.SendTextMessageAsync(update.Message.Chat, invalidCmdText)
()
} |> ignore
()
есть ли способ это написать проще? я хочу заэвейтить дотнетовскую таску в функции replyByInvalidCmd и вернуть unit
Я бы сделал так: let replyByInvalidCmd (botClient: ITelegramBotClient) (update: Update) = botClient .SendTextMessageAsync(update.Message.Chat, invalidCmdText) .GetAwaiter() .GetResult() |> ignore
ignore и () не нужны.
Мне кажется, ты хочешь fire and forget. То есть надо Task.Run использовать.
Да не, не fire and forget. Просто используя функцию я не хочу думать о том что там внутри таск и т.п.
Тогда можешь делать, как другой Илья предложил. Но учти, что у тебя будет не асинхронное ожидание. Залочишься на треде и будешь ждать завершения replyByInvalidCmd.
Да вот тоже не нравится. Тогда наверное все же засвечу task в результате
Так будет оптимальнее, да.
ой, кстати, а этот код случаем не fire and forget то?
такого не надо хотеть) если где-то внутри есть асинхронность, то она должна быть прокинута намсамый верх
Обсуждают сегодня