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