Я - F # noob, и кривая обучения была крутой, в основном из-за непонимания, почему что-то не работает.
Вот простой код, который обновляет индикатор выполнения, работающий в FSI (за исключением строки Application.Run).
open System
open System.Windows.Forms
open System.Drawing
open System.Threading
let form = new Form(TopMost = true, Visible=true)
let pb = new ProgressBar(Minimum = 0, Maximum = 15, Dock = DockStyle.Fill)
form.Controls.Add(pb)
let threadfunc () =
Thread.Sleep(5000)
for i = 0 to 15 do
Thread.Sleep(1000)
pb.Invoke(Action(fun _ -> pb.Value <- i)) |> ignore
let thread = new Thread(threadfunc)
thread.Start()
[<STAThread>]
do Application.Run(form)
Этот же код рисует окно с индикатором выполнения, который не обновляется, а затем падает, когда я пытаюсь построить проект и запустить его из отладчика.