2013-05-17 6 views
2

Я пытаюсь сделать графический интерфейс приложения в F #, который использует диалоговое окно для открытия файла однако всякий раз, когда я пытаюсь использовать его, аварийное завершение работы программы с тем исключением вот мой код:F # System.TypeInitializationException ... почему?

let openAndDrawChart e = 
    let dlg = new OpenFileDialog(Filter="CSV Files|*.csv") 
    if dlg.ShowDialog() = DialogResult.OK then // code crashes here 
     let pieChart = drawChart dlg.FileName 
     boxChart.Image <- pieChart 
     btnSave.Enabled <- true 

Если Я пытаюсь поставить попробовать с блоком вокруг него, программа просто падает после того, как «с» ключевым словом

Кроме того, если я заменю код следующим then с () тогда программа по-прежнему падает, код никогда не получает мимо if ... then заявление

Так кто-нибудь знает, что я делаю неправильно, и как я могу это исправить?

Я просто хочу сказать, что я больше привык к созданию графического пользовательского интерфейса приложения в C#, поэтому пытаются сделать это в F # является новым для меня

Вот точные слова, за исключением в:

+0

Что полная формулировка исключения? –

+0

@RobertHarvey это текст, который вам нужен? –

+2

Без вашего кода, его трудно диагностировать; если я заменю часть вашего кода, следуя 'then', просто'() '(так как вы не указали определения' drawChart', 'boxChart' и т. д.), тогда все работает отлично на моей машине. Можете ли вы придумать небольшой, самодостаточный образ? – kvb

ответ

6

ИТАК, это немного неловко, но, по-видимому программа не очень хорошо с точки входа ...

в нижней части моего кода я имел это:

[<EntryPoint>] 
let main args = 
    0 

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

Но, видимо, это было достаточно, чтобы испортить все вещь!

Извините за неудобства, хотя это может быть хорошая вещь, чтобы оставить это здесь для будущей ссылки

+1

Вы пытались добавить атрибут 'System.STAThread' в' main'? – ildjarn