CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

能否在VC的DLL中实现多线程,在Delphi中使用?

楼主ychyzr(网游)2003-12-02 08:55:55 在 Delphi / VCL组件开发及应用 提问

能否在VC的DLL中实现多线程,在Delphi中使用?  
  比如:   在VC的DLL中开两个线程,一个负责接受数据,另一个负责处理这些数据。将处理的结果返回到Delphi中使用。 问题点数:100、回复次数:14Top

1 楼ychyzr(网游)回复于 2003-12-02 08:59:06 得分 0

哪位仁兄有例程可以发给我参考?   chinayzr@hotmail.com   谢谢!Top

2 楼jxc163(一寒)回复于 2003-12-02 09:07:49 得分 0

如果有例程请发给我一份:   jxc163@163.net  
  最好是纯Delphi的。Top

3 楼Rainsea(飞龙在天)回复于 2003-12-02 09:21:24 得分 10

使用事件就可以的。  
  SetEvent  
  ResetEvent  
  CreateEvent  
  Top

4 楼sundayboysII(空)回复于 2003-12-02 09:23:24 得分 10

呵呵,开线程我不清楚,我现在的项目vc的dll都是开定时器的,另外我们是文件交互的,也就是说dll生成结果文件,delphi开定时器去读取结果文件,当然改进的方法就是内存交互。Top

5 楼ychyzr(网游)回复于 2003-12-02 09:37:24 得分 0

to   sundayboysII(空):   思路不错!  
   
  还有没有更好的办法?  
  可能很多朋友在开发中都遇到这样的问题,大家都进来讨论一下!Top

6 楼ychyzr(网游)回复于 2003-12-02 10:03:46 得分 0

to   Rainsea(飞龙在天):   谢谢!能说详细点吗?Top

7 楼sundayboysII(空)回复于 2003-12-02 10:09:54 得分 10

他那个好像是用来同步事件的。Top

8 楼xogirl(xogirl)回复于 2003-12-02 10:20:13 得分 0

用SOCKET通信去取,VC做客户端,DELPHI这边做服务器端,VC有结果的话向DELPHI发出请求,响应ServerSocket1ClientRead事件Top

9 楼liyangyao970(纳兰容若)回复于 2003-12-02 10:38:40 得分 0

应可以的啊,替你顶哦Top

10 楼jhwh(弹剑长歌(搬个凳子来灌水))回复于 2003-12-02 11:08:41 得分 20

大体意思:在DLL中建立一个人工事件,进行读。读完,重置本事件,由delphi进行写。  
  如果只是同步单个的读写,用一个Mutex就行了,和Event差不多。  
   
  C:  
  HANDLE   h;  
  h   =   CreateEvent(...,"TestEvent");  
  while   (!stop)  
  {  
          WaitForEvent(h...)  
          ReadInfo(   )  
          SetEvent(   )  
  }  
   
   
  Delphi端:一个线程  
  TThread.Exec(   )  
  var   h:THandle;  
  begin  
          h   :=   OpenEvent(...,'TestEvent'   );  
          if   h   =   0   then   exit;  
          while   not   Terminated   do  
          begin  
                  WaitForEvent(h...)  
                  WriteInfo(   );  
                  SetEvent(h);  
          end;  
           
  end  
   
   
  Top

11 楼ychyzr(网游)回复于 2003-12-02 11:09:03 得分 0

我是用Delphi定时调用VC的DLL中的函数来取得DLL中的线程处理的结果的。请问怎么实现?Top

12 楼sundayboysII(空)回复于 2003-12-02 11:25:17 得分 20

如果你这样的要求就好实现多了,也就是让vc的dll开辟一个数组,然后提供方法返回数组中的内容。我的项目中vc写了一个ocx就是用来读取文件内容,这个ocx自己开辟了100个数组用来读取多个文件,然后提供GetFileInfo,IsLastFile,MoveNext等方法,我只要在定时器的for循环中调用GetFileInfo,然后判断IsLastFile,不是就MoveNext。Top

13 楼sundayboysII(空)回复于 2003-12-02 11:25:55 得分 0

哦,对了,还提供InFileSearch函数,让ocx去搜索文件。Top

14 楼Seahilly(小峰)回复于 2003-12-02 13:05:20 得分 30

可以实现,线程的处理与一般程序相同。但是:  
  1、要设计专门的创建线程为好,作为DLL函数输出;  
  2、在DLL做退场处理是要注意线程。  
  Top

相关问题

  • 多线程和DLL
  • VC多线程DLL中回调VB函数的问题!! 急!!
  • 一只菜鸟学vc多线程!
  • 请脚vc的多线程问题
  • 请您解答:delphi多线程例程
  • Dll、多线程、事件传递
  • 怎么在DLL中使用多线程?
  • dll中多线程的问题?
  • 讨论:dll和多线程问题!!!
  • 多线程中调用dll的问题。

关键词

  • dll
  • 线程
  • 函数
  • 文件
  • vc
  • delphi
  • 数组
  • 定时器
  • 实现
  • vc的dll

得分解答快速导航

  • 帖主:ychyzr
  • Rainsea
  • sundayboysII
  • sundayboysII
  • jhwh
  • sundayboysII
  • Seahilly

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo