社区
C++ Builder
帖子详情
多线程使用
olivertree
2003-02-04 01:42:11
首先,我祝大家新年快乐!身体健康!
是这样的,在做一些消耗较大的程序时,比如说大量数据导入阿什么的,总是很占用系统资源,运行一下大约都是90%左右,而且在运行时,打开别的窗口,数据导入的窗口就很难打开、界面上的静态控件也显示不出来。所以我想用多线程实现,比如一个用来显示界面;一个用来响应用户突然的中断,另一个才是执行导入的。可是由于我对于多线程并不熟悉,还请大家赐教!
在这里先谢谢大家了!
...全文
69
6
打赏
收藏
多线程使用
首先,我祝大家新年快乐!身体健康! 是这样的,在做一些消耗较大的程序时,比如说大量数据导入阿什么的,总是很占用系统资源,运行一下大约都是90%左右,而且在运行时,打开别的窗口,数据导入的窗口就很难打开、界面上的静态控件也显示不出来。所以我想用多线程实现,比如一个用来显示界面;一个用来响应用户突然的中断,另一个才是执行导入的。可是由于我对于多线程并不熟悉,还请大家赐教! 在这里先谢谢大家了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qiuafa
2003-05-03
打赏
举报
回复
接分
litvalley
2003-04-25
打赏
举报
回复
UP
watercelery
2003-02-28
打赏
举报
回复
你只要再开1个线程就可以了,你的默认程序会自动开一个,优先级是tpNormal,你只要再开一个优先级比这个低的线程做大数据量的计算,应用程序可以控制这个线程的挂起和唤醒。
这东西不好说,我给你个线程的例子看看吧。
一共有3个一样的CheckBox,每个对应一个Edit控件,该控件中是数字,表示线程的优先级.
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
int x,y;
if(CheckBox1->Checked)
{
x=160;
y=CheckBox1->Top+CheckBox1->Height/2;
//Edit1->Text="2";
if(Ball1==NULL) Ball1=new TSquareThread(clRed,x,y);
Ball1->Resume();
}
else
Ball1->Suspend();
}
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
if(Ball1!=NULL)
{
int nPri=StrToInt(Edit1->Text);
switch(nPri)
{
case 2: Ball1->Priority=tpLowest; break;
case 3: Ball1->Priority=tpLower; break;
case 4: Ball1->Priority=tpNormal; break;
case 5: Ball1->Priority=tpHigher; break;
case 6: Ball1->Priority=tpHighest; break;
default: Ball1->Priority=tpNormal;
}
}
}
线程:
void __fastcall TSquareThread::Execute()
{
Step=1;
do
{
x1=x2;
x2=x2+Step;
if(x2<160) Step=1;
else if(x2>(Form1->ClientWidth-15))
Step=-1;
Synchronize(Paint);
}while(!Terminated);
//---- Place thread code here ----
}
//---------------------------------------------------------------------------
__fastcall TSquareThread::TSquareThread(TColor Col,int XPos,int YPos,bool CreateSuspended):TThread(CreateSuspended)
{
EColor=Col;
x2=XPos;
x1=x2;
y=YPos;
}
void __fastcall TSquareThread::Paint()
{
Form1->Canvas->Pen->Color=Form1->Color;
Form1->Canvas->Brush->Color=Form1->Color;
Form1->Canvas->Rectangle(x1-5,y-5,x1+5,y+5);
Form1->Canvas->Pen->Color=EColor;
Form1->Canvas->Brush->Color=EColor;
Form1->Canvas->Rectangle(x2-5,y-5,x2+5,y+5);
}
class TSquareThread ;
class TSquareThread : public TThread
{
private:
TColor EColor;
int x1,x2,y;
long Step;
protected:
void __fastcall Execute();
void __fastcall Paint();
public:
//__fastcall TSquareThread(bool CreateSuspended);
__fastcall TSquareThread::TSquareThread(TColor Col,int XPos,int YPos,bool CreateSuspended);
};
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TCheckBox *CheckBox1;
TCheckBox *CheckBox2;
TCheckBox *CheckBox3;
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
void __fastcall CheckBox1Click(TObject *Sender);
void __fastcall Edit1Change(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
void __fastcall CheckBox2Click(TObject *Sender);
void __fastcall Edit2Change(TObject *Sender);
private: // User declarations
TSquareThread *Ball1,*Ball2,*Ball3;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Robin
2003-02-22
打赏
举报
回复
呵呵!关注ing !
halibut
2003-02-22
打赏
举报
回复
up!
lanren_me
2003-02-22
打赏
举报
回复
Synchronize();
JAVA多
线
程精讲下
本课程是《零基础学Java》系列课程中的"多
线
程"相关课程.授课形式延续了之前课程的授课风格。内容细腻、详尽,由浅入深!通过本门课程的学习你... 匿名内部类方式
使用
多
线
程l 定时器的
使用
l 多
线
程面试题
java多
线
程
使用
详解与案例,超详细
java多
线
程
使用
java
使用
多
线
程的三种方式: 继承Thread类,并重写run方法。 实现Runnable接口,重写run方法 实现Callable<返回值>接口,重写call方法 实例如下 继承Thread class test extends Thread{ @...
多
线
程的实现和
使用
场景
多
线
程
使用
场景1.1 多
线
程应该最多的场景:1.2多
线
程的常见应用场景:2.多
线
程小案列2.1 多
线
程计算2.2 多
线
程实现卖票小程序2.3多
线
程卖票小程序优化2.4多
线
程卖票小程序优化升级总结 一、多
线
程实现方式 1.1 ...
Qt 多
线
程基础及
线
程
使用
方式
多
线
程
使用
:方式一4.多
线
程
使用
:方式二5.Qt
线
程池的
使用
Qt 多
线
程操作 应用程序在某些情况下需要处理比较复杂的逻辑, 如果只有一个
线
程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要...
SpringBoot
使用
多
线
程
1、为什么
使用
多
线
程 在我们开发系统过程中,经常会处理一些好费时间的任务(如:向数据库中插入上百万数据,将会导致系统等待),这个时候就会自然想到
使用
多
线
程。 2、为什么
使用
Spring来实现多
线
程
使用
Spring比...
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章