F# 在FSI中正确运行的代码不会';项目运行时无法正确运行
我是一个不折不扣的人,学习曲线一直很陡峭,主要是因为我不明白为什么事情不起作用 下面是一些简单的代码,用于更新在FSI中工作的进度条(减去Application.Run行)F# 在FSI中正确运行的代码不会';项目运行时无法正确运行,f#,F#,我是一个不折不扣的人,学习曲线一直很陡峭,主要是因为我不明白为什么事情不起作用 下面是一些简单的代码,用于更新在FSI中工作的进度条(减去Application.Run行) 开放系统 打开System.Windows.Forms 开放系统.绘图 开放系统。线程 让表单=新表单(最顶层=真,可见=真) 设pb=new ProgressBar(最小值=0,最大值=15,Dock=DockStyle.Fill) 表单.控件.添加(pb) 设threadfunc()= 线程。睡眠(5000) 对于i=0
开放系统
打开System.Windows.Forms
开放系统.绘图
开放系统。线程
让表单=新表单(最顶层=真,可见=真)
设pb=new ProgressBar(最小值=0,最大值=15,Dock=DockStyle.Fill)
表单.控件.添加(pb)
设threadfunc()=
线程。睡眠(5000)
对于i=0到15 do
线程。睡眠(1000)
pb.Invoke(操作(乐趣)->pb.Value忽略
let thread=新线程(threadfunc)
thread.Start()
[]
执行应用程序运行(表单)
这段代码会绘制一个带有进度条的窗口,该进度条不会更新,然后在我尝试构建项目并从调试器运行它时崩溃。我不确定为什么会这样,但请尝试添加
应用程序。EnableVisualStyles()
在创建表单之前。当我构建它时,它运行良好,但在退出时崩溃,因为ProgressBar在被释放后会被访问。在我的系统上,进度条可以从FSI进行良好更新。从VS10开始,进度条永远不会出现问题,或者变为蓝色。出于这种原因,我发现WPF比WinForms好得多。
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)