我作个邮件收发系统,问题出现在每隔30分钟(假定)收邮件(从邮件服务器下载)时,程序处于忙状态,影响用户其他的正常操作。
我想实现收邮件后台默默执行,不影响用户操作,不知foxmail和outlook是怎么解决的。
有人建议我用线程实现,我的问题是:
1线程中若设计到数据库的存取,是在进程里动态创建数据集组件还是共享全局的组件(即我放到窗体上的组件)。
2在进程执行过程中能否动态创建或显示一个窗体(tform),并修改窗体的属性。
3谁能给我一个涉及到我的问题的好例子在下不胜感激您的参与,谢谢!
我想实现收邮件后台默默执行,不影响用户操作,不知foxmail和outlook是怎么解决的。
有人建议我用线程实现,我的问题是:
1线程中若设计到数据库的存取,是在进程里动态创建数据集组件还是共享全局的组件(即我放到窗体上的组件)。
2在进程执行过程中能否动态创建或显示一个窗体(tform),并修改窗体的属性。
3谁能给我一个涉及到我的问题的好例子在下不胜感激您的参与,谢谢!
解决方案 »
- 用delphi做个数据库同步程序
- Delphi中如何检测数据库中某个表是否发生了变化???
- 请教,动态数组用完后需要手动释放吗?
- 一个结果问题
- 请问高手这个循环错在何处?!登录时只能出三次错,我输入了正确的名称和密码,为什么还显示此用户不存在,
- 有没有监测注册表变化的软件
- 找师傅
- 我有一個串口程序﹕需要從串口獲得數據然後顯示出來﹐想獲得向股票區線圖的樣式﹐請問如何做﹖用TChart可以做嗎﹖如何做﹖﹖
- 50分,送分,请教,怎样把代码预先放进表里面去
- 非常着急 请高人指点
- 一个简单的问题——关于delphi与API
- 请问用ado 访问参照完整性的access数据库,级联更新和级联删除时,tadodataset是否会自动更新被级联更新和级联删除后的表!
线程中可以显示Form,但是最好不要在线程内部显示,否则还是处于忙状态。
没有例子,我基本不看例子。
所以建议最好不要用线程操作界面上的东西。
private
Dataset1: TADoDataset;
Form1: TForm;
public
constructor create; override;
destructor destroy; override;
implemente
constructor create; override;
begin
Dataset1 := TADoDataset.create(nil);
Form1 := TForm.create(nil);
end;
destructor destroy; override;
2、在线程中可以创建新的窗体,但要在execute中创建,不然窗体的消息队列用的还是主线程的,还是会阻塞;
3、Delphi的线程封装的比VC的好,但开销稍大一些。
用VCL访问Syxxxx的那个函数,可以对VCL进行访问的http://lysoft.7u7.net
以后改成在TThread类里面创建,销毁吧