社区
C++ Builder
帖子详情
关于线程和窗体显示的问题?
daluobo
2002-10-11 06:32:46
我想在窗体显示的时候listview中增加数据,用线程控制数据的增加,可是在窗体上的listview数据不显示,但是当我用ListView1->Items->Count查看listview时不为0,这是什么原因?我应该怎么处理呢?
...全文
33
2
打赏
收藏
关于线程和窗体显示的问题?
我想在窗体显示的时候listview中增加数据,用线程控制数据的增加,可是在窗体上的listview数据不显示,但是当我用ListView1->Items->Count查看listview时不为0,这是什么原因?我应该怎么处理呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
daluobo
2002-10-11
打赏
举报
回复
void __fastcall TSendParaThread::Execute()
{
FreeOnTerminate=true;
Application->ProcessMessages();
AnsiString SendMessStr;
//int SendMessNum;
HANDLE hEvents[1];
hEvents[0]=hEvent_WAIT;
HANDLE hEvents_SEND[2];
hEvents_SEND[0]=hEvent_CMGS;
hEvents_SEND[1]=hEvent_SEND_ERROR;
OpenEvent(EVENT_ALL_ACCESS,false,"COM_REC_WAIT");
OpenEvent(EVENT_ALL_ACCESS,false,"COM_REC_CMGS");
OpenEvent(EVENT_ALL_ACCESS,false,"COM_SEND_FAIL");
DWORD dwWaitResult;
TListItem * ListItem;
TQuery *LineofGSM=new TQuery(NULL);
LineofGSM->DatabaseName="gsmdata";
LineofGSM->SQL->Text="select * from gsm where line='"+LineStrforQuery+"'";
LineofGSM->Open();
//SendMessNum=LineofGSM->RecordCount;
while(!LineofGSM->Eof)
{
ListItem=m_SendInfrofrm->ListViewSendInfor->Items->Add();
ListItem->Caption=LineofGSM->FieldValues["gsmdescr"];
ListItem->SubItems->Add(LineofGSM->FieldValues["simno"]);
dwWaitResult = WaitForMultipleObjects(1,hEvents,FALSE,2000);
switch(dwWaitResult)
{
case WAIT_OBJECT_0 :
ResetEvent(hEvent_WAIT);
SendMessStr=MakeSendParaMeter(LineofGSM->FieldValues["simno"]);
WriteToCom(SendMessStr);
break;
case WAIT_TIMEOUT://超时
ListItem->SubItems->Add("下发失败");
LineofGSM->Next();
continue;
}
dwWaitResult = WaitForMultipleObjects(2,hEvents_SEND,FALSE,2000);
switch(dwWaitResult)
{
case WAIT_OBJECT_0 ://返回OK
ResetEvent(hEvent_CMGS);
ListItem->SubItems->Add("下发成功");
break;
case WAIT_OBJECT_0+1: //返回error
ListItem->SubItems->Add("下发失败");
LineofGSM->Next();
continue;
case WAIT_TIMEOUT://超时 ,下发失败
ListItem->SubItems->Add("下发失败");
LineofGSM->Next();
continue;
}
ListItem->SubItems->Add("下发失败");
LineofGSM->Next();
continue;
}
m_SendInfrofrm->SpeedButtonClose->Visible=true;
delete LineofGSM;
m_SendInfrofrm->SpeedButtonSendPara->Enabled=true;
m_SendInfrofrm->ListViewSendInfor->Refresh();
//ShowMessage(m_SendInfrofrm->ListViewSendInfor->Items->Count);
m_SendInfrofrm->ShowModal();
}
dolphin2001
2002-10-11
打赏
举报
回复
把你代码贴出来
C#多
线程
实现等待
窗体
程序处理比较耗时的操作时,界面经常卡住,给用户一种停止运行的错觉。给出一个等待
窗体
,能够增加程序的友好性,但是由于主程序在忙于处理数据,所以弹出的
窗体
最好用另外一个新的
线程
,来负责
显示
这个等待
窗体
。
C#多
线程
解决界面卡死
问题
的完美解决方案_极简版
C#多
线程
解决界面卡死
问题
的完美解决方案,简化了之前的写法,更容易记住和理解 C#多
线程
解决界面卡死
问题
的完美解决方案,简化了之前的写法,更容易记住和理解
JAVA多
线程
精讲下
线程
的同步(
线程
安全
问题
)l
线程
的死锁l
线程
间通信l
线程
组l
线程
池l 多
线程
的第三种实现方案l 匿名内部类方式使用多
线程
l 定时器的使用l 多
线程
面试题
C#源码大集合 01(共3卷)
├─实例44 如何设置
窗体
的透明度 │ │ ├─实例45 如何设置
窗体
启动位置 │ │ ├─实例46 如何设置
窗体
最前端
显示
│ │ ├─实例47 如何实现精灵提示 │ │ ├─实例48 如何实现打印预览 │ │ ...
C++ qt5 电子版教程
第二章
窗体
应用 1.1
窗体
基类说明 12 1.2 控制
窗体
大小 13 1.3
窗体
初始位置及背景色 13 1.4 修改标题栏图标 14 1.5 移动无边框
窗体
16 1.6 去掉标题栏中最大化、最小化按钮 17 1.7 多
窗体
调用 18 1.8 字体形状
窗体
...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章