Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание UserControl'а, в отдельном потоке, vs2005 
:(
    Опции темы
DEER
Дата 19.1.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: нет
Всего: 13



Час добрый.
Запарка такая:
есть activeX компонента, которую нужно будет юзать в вычислениях.
для её использования кто то уже создал userControl, на нем её и разместил.

!!!userControl этот создается не в потоке приложения!!!
типа
Код

private void LoadExcecuter()
{
//            excecuter = (IExcecuter)Activator.CreateInstance(typeExcecuter, new object[3] {opt.IP, int.Parse(opt.Port),opt.ID});
            // создание контрола my_OCX
            excecuter = new my_OCX(opt.IP, int.Parse(opt.Port), opt.ID);
}
............
    tExcecuter = new Thread(new ThreadStart(LoadExcecuter));
    tExcecuter.Start();


Вообще проект писался под первый дот нет. Сейчас захотели перейти на второй. И при выполнении кода возникает ошибка
Цитата
ActiveX control '4f61fa11-f332-47ef-8047-77d41946b870' cannot be instantiated because the current thread is not in a single-threaded apartment

Виделось два решения проблемы.
1) отойти от userControla, а сделать обычный класс и в него положить этот activeX
2) сделать поток single-threaded
Первый вариант не прокатил, так как все равно activeX - это типа визуальный элемент  (я так понимаю)....
Второй вариант не пробовал, так как не знаю как.

Кто нибудь знает как лечить такую багу?


Это сообщение отредактировал(а) DEER - 19.1.2007, 11:17


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
mr.DUDA
Дата 19.1.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Поставить над методом Main атрибут [STAThread]


--------------------
user posted image
PM MAIL WWW   Вверх
DEER
Дата 19.1.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: нет
Всего: 13



гхм.. метода Main нету....
Код

    tExcecuter = new Thread(new ThreadStart(LoadExcecuter));
    tExcecuter.Start();

это тоже в одном из методов одного класса.
ща над ним попроьую поставить


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
DEER
Дата 19.1.2007, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: нет
Всего: 13



Посмотрел.
над методом Main стоит этот атрибут, причем попробовал его убрать.
В конструкторе главной формы тоже идет создание экземпляра этого userControl'а, так вот если убрать атрибут [STAThread], то происходит падение.

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


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
mr.DUDA
Дата 19.1.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



А обязательно создавать activex компонент в отдельном потоке ?


--------------------
user posted image
PM MAIL WWW   Вверх
DEER
Дата 19.1.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: нет
Всего: 13



Да. 
Там по другому не получится.


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.