Я использую в своем приложении библиотеку Gwen для получения гуев в OpenTK. Однако для чтения и записи файлов в этой библиотеке используется методы, основанные на Windows.Forms Метод для загрузки файла выглядит так:
public static bool FileOpen(String title, String startPath, String extension, Action<String> callback)
        {
            var dialog = new OpenFileDialog
                             {
                                 Title = title,
                                 InitialDirectory = startPath,
                                 DefaultExt = @"*.*",
                                 Filter = extension,
                                 CheckPathExists = true,
                                 Multiselect = false
                             };
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                if (callback != null)
                {
                    callback(dialog.FileName);
                }
            }
            else
            {
                if (callback != null)
                {
                    callback(String.Empty);
                }
                return false;
            }
            return true;
        }
public static void Main (string[] args)
{
//создаем диалог
	System.Windows.Forms.OpenFileDialog oFD = new System.Windows.Forms.OpenFileDialog ();
	oFD.InitialDirectory = ".";
	oFD.Filter = "(*.txt)|*.txt|All files (*.*)|*.*";
	oFD.FilterIndex = 2;
	oFD.RestoreDirectory = false;
//выводим диалог и пишем в консоль результат 
	Console.WriteLine (oFD.ShowDialog ());
//ожидаем нажатие в консоли, при этом диалог должен закрыться, но он "залип"
	Console.ReadKey ();
}


