Вы можете использовать TryTake
из F # без проблем, но вы не можете использовать его как возврат кортежа. Например, в FSI этот код:
open System.Collections.Concurrent
let bc = new BlockingCollection<int>()
let mutable item = 0
bc.Add 42
let success = bc.TryTake(&item, 100)
будет работать нормально и приведет к следующему выводу:
val bc : BlockingCollection<int>
val mutable item : int = 42
val success : bool = true