Я пытаюсь сохранить файл, используя saveFileDialog в F #. До сих пор я смотрел this post и пытался переписать этот и другой код в сети. Я также немного прочитал о saveFileDialogs на msdn.F # saveFileDialog
Я думаю, что мой код должен работать, но по какой-то причине он сбой (если я нажму продолжу в IDE, я даже получу проблеск saveFileDialog, но с неправильным фильтром типов).
Моя авария сообщение «Исключение типа„System.Threading.ThreadStateException“произошло в System.Windows.Forms.dll, но не был обработан в пользовательском коде»
и мой код:
let savefile = new SaveFileDialog()
savefile.FileName <- "My Sudoku.txt"
savefile.Filter <- "Text files (*.txt)|*.txt|All files (*.*)|*.*";
savefile.InitialDirectory <- Directory.GetCurrentDirectory()
savefile.FilterIndex <- 1
if savefile.ShowDialog(new Form(Text="Save", TopMost=true, Width=360, Height=390)) = System.Windows.Forms.DialogResult.OK
then saveFile (savefile.InitialDirectory) (savefile.FileName) (stuffToSave)
else printfn "Error couldn't save"
Код на самом деле происходит в форме с именем createMode, которая начинается с async.
Async.Start(createMode observables sudokuGame) ; GUI.Create.form.ShowDialog()
Попытка сделать что-либо с помощью элементов управления WinForms в любом потоке, отличном от основного потока, предназначена для отказа. – ildjarn
Я бы попробовал ['Async.SwitchToContext'] (https://msdn.microsoft.com/en-us/library/vstudio/ee353903 (v = vs.120) .aspx) - если вы посмотрите на ссылку, вы будете есть пример WinForms прямо там ... – Carsten