Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 07:19 03.06.24 
Клубове/ Компютри и Интернет / .NET Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Re: VB.NET & STA [re: aджaмия]
Автор шeф нa Coди Дeвня (full optional)
Публикувано25.11.03 23:42  



Значи, както казах като ползваш VB.NET, default Threading model ти е STA, и компилатора изплюва необходимия код да инициализира STA преди да почне да се изпълнява какъвто и да е било код.

Като ползваш C# компилатора не генерира такъв код и апликацията ползва дефолтния и единствен MTA инициализиран от CLR.

Ако се съмняваш в думите ми, можеш лесно да го пробваш с този код:

If System.Threading.Thread.CurrentThread.ApartmentState = System.Threading.ApartmentState.STA Then
......
End If


Почти съм убеден че точно в този момент викаш "Еврика" и сядаш да пишеш следния код:

System.Threading.Thread.CurrentThread.ApartmentState = System.Threading.ApartmentState.MTA

Но помни че първата идея макар и първоначално изглеждаща гениална може би не е най-уместната ;-)

Значи, един тред може да инициализира COM apartment само веднъж. Тъй като рънтайма прави това преди да изпълни unmanaged code от този тред, ти трябва да сетнеш ApartmentState възможно най-рано. Ако се забавиш случайно, и го промениш след като апартмента е бил инициализиран, твоето сетване няма да промени абсолютно нищо, тъй като апартментите нямат такива свойства да си сменят стейта от време на време по прищавка на програмиста ;-)

За това ти трябва план Б: <MTAThread()>

По-добре е да ползваш MTAThreadAttribute, защото чрез този атрибут апартмента се сетва преди да почне да се изпълнява какъвто и да е било код. Иначе трябва ти да се грижиш да го сетнеш възможно най-бързо.

Не съм писал на вижуал бейсик и не знам доколко е добра идея да ползваш МТА, ама ти си знаеш. Успех.


XM TurboCT .. where comfort meets power

Цялата тема
ТемаАвторПубликувано
* VB.NET & STA aджaмия   06.11.03 12:16
. * Re: VB.NET & STA шeф нa Coди Дeвня   18.11.03 10:50
. * Re: VB.NET & STA aджaмия   25.11.03 14:12
. * Re: VB.NET & STA synchu   25.11.03 14:42
. * Re: VB.NET & STA aджaмия   26.11.03 16:03
. * Re: VB.NET & STA шeф нa Coди Дeвня   25.11.03 23:42
. * Re: VB.NET & STA aджaмия   26.11.03 16:04
. * Re: VB.NET & STA synchu   27.11.03 10:31
. * Re: VB.NET & STA aджaмия   28.11.03 15:38
. * Re: VB.NET & STA synchu   28.11.03 15:41
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.