SaveFileDialog из другого потока

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

aave
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 08.08.2012 (Ср) 8:37

SaveFileDialog из другого потока

Сообщение aave » 24.08.2012 (Пт) 11:13

При попытке показать диалог SaveFileDialog из вторичного потока программы, вылетает ошибка
Текущий поток должен быть задан как поток однопоточного контейнера (STA), чтобы вызовы OLE стали возможны. Проверьте, что ваша функция Main помечена атрибутом STAThreadAttribute. Данное исключение создается, только если к процессу подключен отладчик.


Поиск по справкам и MSDN ни к чему не привёл. Лучшее, что я нашёл - это http://www.gotdotnet.ru/forums/3/92048/ на языке C#, но я его плохо знаю и переписать под VB.NET у меня не получилось.

Подскажите, как преодолеть эту трудность?
Буду рад видеть вас в моём блоге SolTau.ru, посвящённом технике и технологиям!

aave
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 08.08.2012 (Ср) 8:37

Re: SaveFileDialog из другого потока

Сообщение aave » 24.08.2012 (Пт) 12:34

Всё, разобрался. Вот код на VB.NET:

Код: Выделить всё
Private Delegate Function SaveFileDialogInvoker() As DialogResult

Private Sub MySub(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
   Dim sv As SaveFileDialog = New SaveFileDialog()
   Dim invoker As SaveFileDialogInvoker = New SaveFileDialogInvoker(AddressOf sv.ShowDialog)
   Me.Invoke(invoker)
End Sub
Буду рад видеть вас в моём блоге SolTau.ru, посвящённом технике и технологиям!


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 38

    TopList