Исключение при попытке показать FileDialog
От: Dmitriy Dubrovskiy Россия  
Дата: 08.08.06 13:35
Оценка:
Здравствуйте!

При попытки вызвать SaveFileDialog.ShowDialog() почему-то стало возникать исключение:

Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it. This exception is only raised if a debugger is attached to the process.

at System.Windows.Forms.FileDialog.RunDialog(IntPtr hWndOwner)
at System.Windows.Forms.CommonDialog.ShowDialog(IWin32Window owner)
at System.Windows.Forms.CommonDialog.ShowDialog()
at DataOrganizer.Forms.MainForm..ctor() in D:\Dubrovskij\My documents\Visual Studio 2005\Projects\DataOrganizer\DataOrganizer\MainForm.cs:line 26
at DataOrganizer.Forms.Program.Main() in D:\Dubrovskij\My documents\Visual Studio 2005\Projects\DataOrganizer\DataOrganizer\Program.cs:line 24
at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()


Уже голову поломал, что ему надо. Проект сократи до минимума. С главной формы все грохнул.

public partial class MainForm : Form
{
   public MainForm()
   {
      InitializeComponent();

      _saveFileDialog.ShowDialog();
   }
   ....
}



    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new MainForm());
        }
    }



Solution состоит из двух проеков. Один морда (где исключение), другой использует NHibernate и SQLite.Net.
Что делать?



08.08.06 20:36: Перенесено из '.NET'
Re: Исключение при попытке показать FileDialog
От: Красин Россия  
Дата: 08.08.06 13:43
Оценка:
Здравствуйте, Dmitriy Dubrovskiy, Вы писали:

DD>Что делать?


Сделайте минимальный solution и выложите сюда.
Re: Исключение при попытке показать FileDialog
От: AlexZu Россия  
Дата: 08.08.06 13:47
Оценка:
Здравствуйте, Dmitriy Dubrovskiy, Вы писали:

DD>Здравствуйте!


DD>При попытки вызвать SaveFileDialog.ShowDialog() почему-то стало возникать исключение:


Интересно, чему равно значение Thread.CurrentThread.ApartmentState в методе Main.
Re: Исключение при попытке показать FileDialog
От: Dmitriy Dubrovskiy Россия  
Дата: 09.08.06 05:50
Оценка:
Я разобрался. Выходная сборка проекта была Data.exe А в выходной директории проекта находилась (просто файл лежал) сборка с другого проекта с именем Data.dll. Видимо, окошко открытия файла искало текущую сборку а находило вместо этого Data.dll без методов помеченных [STAThread]. Вот и исключение. Вылечилось удалением Data.dll с диска.

Спасибо всем кто ответил — именно ваши письма натолкнули на эту мысль.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.