Чтобы визуализировать данные из интерактивной консоли F #, я могу сделать следующее:
open System.Windows.Forms
let testgrid (x) =
let form = new Form(Visible = true)
let data = new DataGridView(Dock = DockStyle.Fill)
form.Controls.Add(data)
data.DataSource <- x
testgrid [|(1,1);(2,2)|]
Но если поместить вышеупомянутое в скомпилированную программу F # и вызвать testgrid [|(1,1);(2,2)|]
внутри программы, я получил только зависаниеокно без данных.Что нужно сделать, чтобы эта testgrid
работала для соответствующей программы F #? РЕДАКТИРОВАТЬ: с ответом ildjarn и некоторым поиском, хорошо ли следующий код?Есть подводные камни?
let testgrid x =
let makeForm() =
use form = new Form()
new DataGridView(Dock = DockStyle.Fill, DataSource = x) |> form.Controls.Add
Application.Run form
let thread = new System.Threading.Thread(makeForm)
thread.SetApartmentState(Threading.ApartmentState.STA)
thread.Start()