Код, который работает правильно в FSI, не работает правильно при запуске проекта - PullRequest
1 голос
/ 17 марта 2011

Я - 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)

Этот же код рисует окно с индикатором выполнения, который не обновляется, а затем падает, когда я пытаюсь построить проект и запустить его из отладчика.

1 Ответ

0 голосов
/ 17 марта 2011

Я не уверен, почему это работает, но попробуйте добавить Application.EnableVisualStyles() перед созданием формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...