Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с потоками

841
02 февраля 2009 года
_nic
199 / / 29.07.2006
Такой вот код
Код:
#include <vcl.h>
#include <process.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
void thr(void *Pvoid)
{
MessageBox(0,"!!!!!!","!!!!!",MB_OK);
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
_beginthread(thr,0,0);
}

Проблема втом что код в потоке не отрабатывает.В дебаг режиме вроде как бы "ОК" ,если не считать того что процесс bds.exe грузит процентов на 40 процессор.А если программу запустить в не IDE вылазит матюк что память не может быть read :( В чем может быть дело?
11
02 февраля 2009 года
oxotnik333
2.9K / / 03.08.2007
скорей всего, косяк в том что VCL объекты нельзя создавать вне главного потока
ЗЫ: в ВСВ6 все нормально проходит, глюков не замечено
1.9K
02 февраля 2009 года
GreenRiver
451 / / 20.07.2008
Builder 2009 - тоже никаких проблем!
246
03 февраля 2009 года
GIZMO
1.8K / / 30.07.2004
Цитата: oxotnik333
скорей всего, косяк в том что VCL объекты нельзя создавать вне главного потока


а хде тут VCL объект создается?

11
03 февраля 2009 года
oxotnik333
2.9K / / 03.08.2007
Цитата: GIZMO
а хде тут VCL объект создается?


MessageBox это не VCL ?
я в исходниках не лазил, может это просто обертка над WinAPI-вской, но обертка то вцл-евская, и к тому же я только предположил, ибо больше не куда этот косяк списать.

246
03 февраля 2009 года
GIZMO
1.8K / / 30.07.2004
Цитата: _nic
Такой вот код
...
Проблема втом что код в потоке не отрабатывает.В дебаг режиме вроде как бы "ОК" ,если не считать того что процесс bds.exe грузит процентов на 40 процессор.А если программу запустить в не IDE вылазит матюк что память не может быть read :( В чем может быть дело?


1. В справке написано: - Use the -tWM (32-bit multi-threaded target) command-line switch.

 
Код:
#pragma checkoption -tWM
#include        <windows.h>
#include        <process.h>

2. В справке (вроде) ничего не говорится, что второй параметр м.б. 0.
3. Посмотри, что возвращает функция и какое значение в - errno.
4. Завершать поток надо или - simply returning, or by calling _endthread.
246
03 февраля 2009 года
GIZMO
1.8K / / 30.07.2004
Цитата: oxotnik333
MessageBox это не VCL ?
я в исходниках не лазил, может это просто обертка над WinAPI-вской, но обертка то вцл-евская


Нет

Цитата: oxotnik333

и к тому же я только предположил, ибо больше не куда этот косяк списать.


да ладна:)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог