После некоторых размышлений кажется, что наложение блокировки на Seq.iteri на самом деле не имеет смысла, поскольку Seq ленив в F #.
Однако интересно отметить, что возникает исключение, когда дополнительные элементы словаря вставляются другим потоком во время итерации последовательности. Не уверен, полностью ли это оправдано для ленивой итерации.
Мое решение (как функция) прямо сейчас:
(fun _ ->
lock info (fun _ ->
info
|> Seq.iteri (fun i x -> ...)))
Я надеюсь, что можно ответить на мой собственный вопрос (я новичок здесь).