我想请教怎么在Thread中放非可视华控件,比如我要在Thread中放一个ClientSocket然后通过开多个线程来对多个IP进行扫描(用ClientSocket去连接那些IP,如果连接成功就表示打开了)请教该怎么做呢?
我在线程中new一个出来,然后自己写它的OnError函数好象有点不对呀,
然后我又在Thread中包含一个DateModule,在DateModule放ClientSocket好象也不行,请教该怎么做呢??
还有就是
for (int i=0; i<10; i++)
TMyThread *my =new TMyThread(false);
这样是不是就是有10个线程在同时运行呢?
TMyThread *my[10] ;
for (int i=0;i<10;i++)
my[i] = new TMyThread(false);
delete []my ;
在线程里使用ClientSocket,它的属性ClientType必须为ctBlocking,不能使用ctNonBlocking。如果使用ctNonBlocking的话,就是消息驱动的了,而
BCB的TThread对于消息的处理是有缺陷的,不能在TThread里响应消息,所以在
TThread里指定消息的事件处理函数是没有用的。当ClientType为ctBlocking时,
程序就象DOS下,直接是顺序执行了。比如:
TClientSocket* Socket = new TClientSocket(NULL);
Socket->ClientType = ctBlocking;
Socket->Address = "111.111.111.1";
Socket->Port = 100;
try {
Socket->Active = true;
//连接成功
}
catch(Exception& e) {
//连接失败
MessageBox(NULL, e.Message(), "Error", MB_OK);
}
//.......
delete Socket;