|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.10.2009, 12:48 | #1 |
Регистрация: 03.10.2009
Сообщений: 7
|
Извлечение данных из потока
Всем доброго времени суток!!!
Возникла проблема с которой никак не могу справиться. Проблема в следующем: Есть стороннее приложение, для него я написал dll для рассчета статистики. Обсчет очень тяжелый, по этой причине я запихнул его в поток. Все работает нормально, кроме одного. Из этого потока я никак не могу извлечь результаты вычисленй. В потоке все обсчитывается правильно, а результаты возвращает в виде 0. (Я только начинающий форумчанин, по-этому прошу модераторов не отрываться на мне.) |
03.10.2009, 13:05 | #2 |
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
Как происходит передача данных dll, как пытаетесь получить данные обратно?
Приведите части кода где это происходит. Тогда можно будет говорить предметнее.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". |
03.10.2009, 16:56 | #3 | |
Регистрация: 03.10.2009
Сообщений: 7
|
Цитата:
Код:
Последний раз редактировалось Stilet; 05.10.2009 в 10:04. |
|
03.10.2009, 17:41 | #4 | |
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
Цитата:
Запустить данный код не могу, нет некоторых модулей, но думаю проблема здесь: Код:
пытаетесь получить результат Result:= DLLThread.ThreadOut; Если вычисления занимают некоторое время, то при выполнении данного кода (Result:= DLLThread.ThreadOut результат еще не определен. Т.е. необходимо сделать так: DLLThread.Resume; // подождать завершения потока Result:= DLLThread.ThreadOut; Для синхронизации можно использовать семафоры: Попробуйте так: Код:
Код:
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". |
|
03.10.2009, 17:56 | #5 |
Регистрация: 03.10.2009
Сообщений: 7
|
Я эмулировал родительский поток, сделал трассировку dll.
Проводил параллельное вычисление в эмулирующем родительском потоке и dll. Результаты были идентичны в родительском потоке и потоке dll. Идентичные до выхода из потока dll. В родительском приложении я данные скидывал в Файл. Последний раз редактировалось Stilet; 05.10.2009 в 10:07. |
03.10.2009, 18:28 | #6 | |
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
Цитата:
Данные пропадают в NetCore или при выходе из dll в основную программу? Т.е. именно массивы имеют 0 значения, т.е. исключений нет? Попробуйте скинуть данные в файл из потока.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". Последний раз редактировалось Daramant; 03.10.2009 в 18:33. |
|
03.10.2009, 18:58 | #7 |
Регистрация: 03.10.2009
Сообщений: 7
|
Данные пропадают при выходе из потока. Вот здесь их уже нет.
Result:= DLLThread.ThreadOut; Думаю да, все дело в том что программа не дожидается звершения потока. |
03.10.2009, 19:05 | #8 | |
Форумчанин
Регистрация: 06.01.2009
Сообщений: 340
|
Код:
Цитата:
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник". |
|
05.10.2009, 08:42 | #9 |
Регистрация: 03.10.2009
Сообщений: 7
|
Семафор не помог.
Чтобы быть абсолютно уверенным, что мы говорим об одном и том-же я сделал упрщенную копию проекта. Моудль dll: Код:
Выщывающий exe //*********************************** ********************* Код:
Хрень абсолютно таже самая. Из потока данные не выбираются. Последний раз редактировалось Stilet; 05.10.2009 в 10:07. |
05.10.2009, 12:37 | #10 |
Регистрация: 03.10.2009
Сообщений: 7
|
Разобрался, все работает. Благодарю.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Извлечение значений из БД? | ITM | Microsoft Office Excel | 4 | 10.01.2009 23:40 |
Access извлечение данных из строки | Melamory | Microsoft Office Access | 3 | 28.09.2008 19:50 |
Извлечение данных из TCppWebBrowser | НикСерг | Общие вопросы C/C++ | 1 | 13.07.2008 17:16 |
Безопасное извлечение | SunKnight | Win Api | 1 | 12.01.2008 02:06 |