1
我是F#noob,學習曲線一直很陡,主要是因爲不理解爲什麼事情不起作用。在FSI中運行正確的代碼在運行項目時無法正確運行
下面是一些簡單的代碼,用於更新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)
此相同的代碼drawws一個進度條,不更新的窗口,然後崩潰,當我嘗試建立的項目,並從調試器中運行。
當我構建它時運行良好,但它在退出時崩潰,因爲ProgressBar在處置後被訪問。 – 2011-03-17 07:56:19
在我的系統上,進度條從FSI更新得很好。從VS10開始,進度條永不消退,或變爲藍色。 – Chuck 2011-03-17 07:59:40
FWIW,由於這種原因,我發現WPF比WinForms好很多。 – 2011-03-19 22:45:41