NB: Я не профессиональный разработчик программного обеспечения, но я пишу много кода, который не использует асинхронное что-либо, поэтому я приношу свои извинения, если этот вопрос действительно прост.
Я взаимодействую с библиотекой, написанной на С#. Существует определенная функция (позволяет называть ее "func" ), которая возвращает "Threading.Tasks.Task > "
Я создаю библиотеку в F #, которая использует func. Я тестировал следующий фрагмент кода в консольном приложении, и он работал нормально.
let result =
func()
|> Async.AwaitTask
|> Async.RunSynchronously
|> Array.ofSeq
Однако, когда я запускаю его из приложения WinForms (в конечном итоге, это то, что я хочу сделать), исполняемые блоки в коде формы и никогда не возвращаются.
Итак, я испортил код и пробовал следующее, которое сработало.
let result =
async{
let! temp =
func()
|> Async.AwaitTask
return temp
} |> Async.RunSynchronously |> Array.ofSeq
Почему первый фрагмент не работал? Почему второй фрагмент работы? Есть ли что-нибудь на на этой странице, которая ответит на любой из этих вопросов? Если это так, это не кажется очевидным. Если нет, можете ли вы указать мне куда-нибудь, что делает?