2015-10-15 1 views
0

Я успешно установил MonoDevelop с привязками F # (под Linux Arch).mono - winforms не работает должным образом с f #

Если я попробую простой HelloWorld с winforms, я получаю это странное поведение: программа компилируется и строится успешно, но через мгновение после загрузки окна она просто закрывается и программа возвращается без сообщений об ошибках.

Я проверил журналы, и кажется, что ошибка не выбрасывается (кроме тех, которые обсуждаются здесь: GLib-CRITICAL **: Source ID XXX was not found when attempting to remove it, что в любом случае кажется несвязанным).

Код программы:

open System.Drawing 
open System.Windows.Forms 

[<EntryPoint>] 
let main argv = 
    let form = new Form(TopMost = true, Text = "Hello World") 
    form.Show() 
    0 // return an integer exit code 

Если я пытаюсь запустить его через интерактивную консоль, окно является своего рода замороженная: Я могу переместить его вокруг, но я не могу закрыть его (у для этого отключите монодебель).

Я также попытался скомпилировать его с помощью терминала, используя:

fsharpc Program.fs -pkg:dotnet.dll 
mono Program.exe 

, но он ведет себя точно так же, как если бы я бежал через MonoDevelop (открывается окно затем выключается). Кроме того, что F # работает нормально, я могу запускать консольные программы без каких-либо проблем.

Я также попытался запустить простую программу HelloWorld с C# в MonoDevelop, и она просто отлично работает.

Любые советы?

ответ

2

Вы должны начать цикл событий формы с чем-то вроде

Application.Run(new Form()) 
+0

Попробованного минуту назад, он работал просто отлично :) Спасибо! Я читал, что не рекомендуется использовать Application.Run() в пользу form.Show(), но это, похоже, не так. Ну что ж. – mp85