#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 :( В чем может быть дело?
ЗЫ: в ВСВ6 все нормально проходит, глюков не замечено
Builder 2009 - тоже никаких проблем!
Цитата: oxotnik333
скорей всего, косяк в том что VCL объекты нельзя создавать вне главного потока
а хде тут VCL объект создается?
Цитата: GIZMO
а хде тут VCL объект создается?
MessageBox это не VCL ?
я в исходниках не лазил, может это просто обертка над WinAPI-вской, но обертка то вцл-евская, и к тому же я только предположил, ибо больше не куда этот косяк списать.
Цитата: _nic
Такой вот код
...
Проблема втом что код в потоке не отрабатывает.В дебаг режиме вроде как бы "ОК" ,если не считать того что процесс bds.exe грузит процентов на 40 процессор.А если программу запустить в не IDE вылазит матюк что память не может быть read :( В чем может быть дело?
...
Проблема втом что код в потоке не отрабатывает.В дебаг режиме вроде как бы "ОК" ,если не считать того что процесс 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>
#include <windows.h>
#include <process.h>
2. В справке (вроде) ничего не говорится, что второй параметр м.б. 0.
3. Посмотри, что возвращает функция и какое значение в - errno.
4. Завершать поток надо или - simply returning, or by calling _endthread.
Цитата: oxotnik333
MessageBox это не VCL ?
я в исходниках не лазил, может это просто обертка над WinAPI-вской, но обертка то вцл-евская
я в исходниках не лазил, может это просто обертка над WinAPI-вской, но обертка то вцл-евская
Нет
Цитата: oxotnik333
и к тому же я только предположил, ибо больше не куда этот косяк списать.
да ладна:)