bcb idhttp 线程下载问题

wanganfuz 2010-12-31 04:00:35
将idhttp写在了线程里面下载,

开启线程
NewAPI   *thread=   new   NewAPI(true,CloseStatus,"tid");
thread->FreeOnTerminate=true;
thread->ComStyle="TBPCGet";
thread->Resume();
while(WaitForSingleObject((void* )thread-> Handle,100)==WAIT_TIMEOUT)
{
Application->ProcessMessages();
}


现在发现用别的按钮再次开启的时候

NewAPI   *thread=   new   NewAPI(true,CloseStatus,"tid");
thread->FreeOnTerminate=true;
thread->ComStyle="xxxxx";
thread->Resume();
while(WaitForSingleObject((void* )thread-> Handle,100)==WAIT_TIMEOUT)
{
Application->ProcessMessages();
}



前一个下载会停掉,只会在下一个下载好后继续。请教下各位原因!分实在没了
...全文
311 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanganfuz 2011-01-04
  • 打赏
  • 举报
回复
我只是想可以一起下载,下载一个下载的话,其他线程都会暂停,有什么具体办法吗,或者写法
wanganfuz 2011-01-04
  • 打赏
  • 举报
回复
是WaitForSingleObject()的缘故吗?现在一次都只能运行一个线程,其他等待
wanganfuz 2011-01-04
  • 打赏
  • 举报
回复
急等啊
__lhy 2010-12-31
  • 打赏
  • 举报
回复
SwitchToThread()被执行的时候,
系统会查看是否存在一个需要CPU时间的线程,如果没有,就立即返回。
如果存在,就对该线程进行调度。
(该线程的优先级可以低于调用SwitchToThread的线程)
From 《Windows核心编程》
一个类似的函数是Sleep
该函数只在NT(2000、XP)上有
__lhy 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wanganfuz 的回复:]

C/C++ code
void __fastcall NewAPI::Execute()
{
if (ComStyle=="xxxxx")
{
DDGetError=false;
TXMLDocument *XMLDDDetail=new TXMLDocument(NULL);
XMLDDDetail->Active=False;
XMLDDDetail->XML->Clear();
TIdH……
[/Quote]
SwitchToThread
wanganfuz 2010-12-31
  • 打赏
  • 举报
回复
??楼上的意思是
辛鹤 2010-12-31
  • 打赏
  • 举报
回复
用thread
wanganfuz 2010-12-31
  • 打赏
  • 举报
回复
线程就做一个下载操作,如果其他地方new这个线程就会卡着等待
wanganfuz 2010-12-31
  • 打赏
  • 举报
回复
void __fastcall NewAPI::Execute()
{
if (ComStyle=="xxxxx")
{
DDGetError=false;
TXMLDocument *XMLDDDetail=new TXMLDocument(NULL);
XMLDDDetail->Active=False;
XMLDDDetail->XML->Clear();
TIdHTTP *IdCS1=new TIdHTTP(NULL);
IdCS1->ConnectTimeout=20000;
IdCS1->ReadTimeout=20000;
IdCS1->ProtocolVersion=pv1_1;
IdCS1->AllowCookies=True;
IdCS1->ProxyParams->BasicAuthentication=false;
IdCS1->HTTPOptions<<hoInProcessAuth<<hoKeepOrigProtocol<<hoForceEncodeParams;
IdCS1->HandleRedirects=false;
try
{
XMLDDDetail->LoadFromXML(IdCS1->Get(DDGetURL));
IdCS1->Disconnect();
}
catch(...)
{
bool linkerror=true;
for (int i = 0; i < 3; i++)
{
TIdHTTP *IdCS=new TIdHTTP(NULL);
IdCS->ConnectTimeout=20000;
IdCS->ReadTimeout=20000;
IdCS->ProtocolVersion = pv1_1;
IdCS->AllowCookies = True;
IdCS->ProxyParams->BasicAuthentication=false;
IdCS->HTTPOptions<<hoInProcessAuth<<hoKeepOrigProtocol<<hoForceEncodeParams;
IdCS->HandleRedirects=false;
XMLDDDetail->Active=False;
XMLDDDetail->XML->Clear();
try
{
XMLDDDetail->LoadFromXML(IdCS->Get(DDGetURL));
IdCS->Disconnect();
delete IdCS;
linkerror=false;
break;
}
catch(...)
{
delete IdCS;
}
}
if (linkerror==true)
{
delete IdCS1;
delete XMLDDDetail;
DDGetError=true;
return;
}
}
delete IdCS1;
Form_Main->XMLDD->XML->Text=XMLDDDetail->XML->Text;
delete XMLDDDetail;
}
}
wanganfuz 2010-12-31
  • 打赏
  • 举报
回复
[code=C/C++]void __fastcall NewAPI::Execute()
{
if (ComStyle=="xxxxx")
{
DDGetError=false;
TXMLDocument *XMLDDDetail=new TXMLDocument(NULL);
XMLDDDetail->Active=False;
XMLDDDetail->XML->Clear();
TIdHTTP *IdCS1=new TIdHTTP(NULL);
IdCS1->ConnectTimeout=20000;
IdCS1->ReadTimeout=20000;
IdCS1->ProtocolVersion=pv1_1;
IdCS1->AllowCookies=True;
IdCS1->ProxyParams->BasicAuthentication=false;
IdCS1->HTTPOptions<<hoInProcessAuth<<hoKeepOrigProtocol<<hoForceEncodeParams;
IdCS1->HandleRedirects=false;
try
{
XMLDDDetail->LoadFromXML(IdCS1->Get(DDGetURL));
IdCS1->Disconnect();
}
catch(...)
{
bool linkerror=true;
for (int i = 0; i < 3; i++)
{
TIdHTTP *IdCS=new TIdHTTP(NULL);
IdCS->ConnectTimeout=20000;
IdCS->ReadTimeout=20000;
IdCS->ProtocolVersion = pv1_1;
IdCS->AllowCookies = True;
IdCS->ProxyParams->BasicAuthentication=false;
IdCS->HTTPOptions<<hoInProcessAuth<<hoKeepOrigProtocol<<hoForceEncodeParams;
IdCS->HandleRedirects=false;
XMLDDDetail->Active=False;
XMLDDDetail->XML->Clear();
try
{
XMLDDDetail->LoadFromXML(IdCS->Get(DDGetURL));
IdCS->Disconnect();
delete IdCS;
linkerror=false;
break;
}
catch(...)
{
delete IdCS;
}
}
if (linkerror==true)
{
delete IdCS1;
delete XMLDDDetail;
DDGetError=true;
return;
}
}
delete IdCS1;
Form_Main->XMLDD->XML->Text=XMLDDDetail->XML->Text;
delete XMLDDDetail;
}
}code]
ccrun.com 2010-12-31
  • 打赏
  • 举报
回复
你的线程里是怎么实现的?
wanganfuz 2010-12-31
  • 打赏
  • 举报
回复
在线等··
内容概要:本文提出了一种基于概率调控的风光联合出力极端场景生成方法,旨在有效应对风能与太阳能发电固有的强不确定性问题。该方法融合概率统计理论与优化控制策略,通过对历史风光出力数据进行建模,采用概率分布调控技术生成具有高代表性的极端场景集,从而为电力系统在极端天气条件下的运行分析提供可靠的数据支撑。文中详细阐述了模型的构建原理、核心算法设计及完整的场景生成流程,并利用实际案例验证了所提方法在提升场景多样性和极端性方面的有效性与实用性,显著增强了电力系统在高比例可再生能源接入背景下的风险评估与决策能力。; 适合人群:具备一定电力系统基础知识和Python编程能力,从事新能源发电、电力系统规划与运行、不确定性建模、场景生成及风险评估等相关领域的研究人员和工程技术人员。; 使用场景及目标:①用于电力系统中风光出力不确定性建模与极端场景的高效模拟;②支撑含高比例可再生能源电网的可靠性评估、安全校核、调度优化与风险防控研究;③为电力系统规划、应急管理和极端事件应对提供科学依据和技术工具。; 阅读建议:建议读者结合文中提供的Python代码进行动手实践,深入理解概率调控机制与场景生成算法的实现细节,掌握参数调整对场景特性的影响规律,并可进一步将该方法拓展应用于其他不确定性电源或多能源耦合系统的场景分析中。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧