Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];

Вниз

TADOConnection и TThread   Найти похожие ветки 

 
MVova   (2004-01-13 15:41) [0]

Делаем новый проект.
Добавляем поток:
ttt = class(TThread)
..........................
procedure ttt.Execute;
var
D : TADOConnection;
begin
CoInitializeEx( nil, 0);
D:= TADOConnection.Create(nil);
repeat
Sleep(10);
until false;
end;

На форму кладем кнопку.
На клик кнопки пишем

procedure TForm1.Button1Click(Sender: TObject);
begin
ttt.Create(false);
end;

Запускаем приложение.
Нажимаем на клавиатуре Windows + E (вызов проводника)
Все прекрасно, открылся.
Жмем кнопку на форме.
Нажимаем на клавиатуре Windows + E (вызов проводника)
Опс, не открылся. И не откроется пока не уничтожится TADOConnection.

Встречал ли такое кто-то?
Как с этим бороться?


 
Palladin   (2004-01-13 17:38) [1]

научись играть на гитаре... применительно к тебе: создавать объекты классов


 
Serginio666   (2004-01-13 18:05) [2]

А где CoUnInitializeEx( nil, 0);


 
Семен Сорокин   (2004-01-13 18:09) [3]

Palladin © (13.01.04 17:38) [1]
научись играть на гитаре... применительно к тебе: создавать объекты классов

ну с этим вроде все нормально
ttt - тип, а не экземпляр


 
Семен Сорокин   (2004-01-13 18:11) [4]

только убивать надо после себя :)
и поток (FreeOnTerminate), и TADOConnection


 
MVova   (2004-01-13 18:17) [5]


> Palladin © (13.01.04 17:38) [1]

Если можно, подробнее.
Могу привести полностью код, если надо.


 
MVova   (2004-01-13 18:19) [6]


> Семен Сорокин © (13.01.04 18:11) [4]

Я все это понимаю, это не рабочий проект и уборка за собой не влияет на поведение системы. Все сделано для наглядности.


 
Семен Сорокин   (2004-01-13 18:22) [7]

2MVova
попробуй создавать Connection в конструкторе.


 
MVova   (2004-01-13 18:31) [8]


> Семен Сорокин © (13.01.04 18:22) [7]

Спасибо. Помогло.
Хоть намеком, где собака зарыта?


 
MVova   (2004-01-13 18:44) [9]


> Семен Сорокин © (13.01.04 18:22) [7]

Не, не получилось. Конструктор работает в потоке создателе. Необходимо коннект создавать именно в другом потоке.

В реальной ситуации коннект создается COM сервером, а каждый COM сервер в отдельном потоке.


 
Тимохов   (2004-01-13 18:48) [10]

MVova © (13.01.04 18:44) [9]
Может поможет. У меня также используется adoconnection из различных потоков. Создается в главном потоке, а используется в неглавных. Т.к. ado apartment, то это можно. При обращении к adoconnection используется критическая секция.


 
MVova   (2004-01-13 18:53) [11]


> Тимохов © (13.01.04 18:48) [10]

Мелькнула у меня такая мысль, но как-то не охота.
И к тому же маштабируемость снижается.


 
Тимохов   (2004-01-13 18:55) [12]

Да вообще с этим apartment не все ясно. Я вот тут сейчас почитал, и подумал, что может вообще и без критических секций можно обойтись.
Вообще ворос к мастерам дельфи+com. Можно ли к aparment com объекту, созданному в главном потоке, безопасно обращаться из дочерних потоков без средств синхронизации?


 
Семен Сорокин   (2004-01-13 19:09) [13]

Тимохов © (13.01.04 18:55) [12]
Apartment (or Single-threaded apartment)
COM ensures that only one client thread can call the object at a time. All client calls use the thread in which the object was created.
Objects can safely access their own instance data, but global data must be protected using critical sections or some other form of serialization.
походу нет.


 
Тимохов   (2004-01-13 19:15) [14]

Семен Сорокин © (13.01.04 19:09) [13]
Семен, знаете ли, я неплохо знаю английский и, конечно, я это читал. Но понять я это не могу. Поясню вопрос. Что имеется в виду под global data, я так понимаю, что имеется в виду глобальная дата относительно ком-объекта. Тогда я тут причем - ado писал не я, соответственно это не моя забота. А вот могу ли я его использовать из разных потоков - не ясно.


 
Palladin   (2004-01-13 19:27) [15]

Прошу прощенья за невнимательность.


 
Семен Сорокин   (2004-01-13 20:19) [16]

2Тимохов
вот на сайте глубокоуважаемого Подгоретского нашел:
http://podgoretsky.com/ftp/Docs/Delphi/DX/COMmodel.html


 
MVova   (2004-01-14 11:09) [17]

UP



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
14-72915
Marser
2004-01-02 02:28
2004.01.23
Никак не могу привыкнуть


14-72918
Saimon
2004-01-02 05:36
2004.01.23
Как в Win9x сделать форму прозрачной?


3-72688
kirov_igor
2003-12-24 12:54
2004.01.23
Поиск по набору данных


14-72921
Golon
2003-12-31 19:54
2004.01.23
Убить Билла


14-72876
aLL
2004-01-03 20:56
2004.01.23
Помогите в написании. программы.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский