CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

请教各位老师一个线程问题:Synchronize(Method:TThreadMethod)中的Method不能带参数吗?

楼主chenyf2006()2004-12-02 14:39:12 在 Delphi / VCL组件开发及应用 提问

请教各位老师一个线程问题:  
  Synchronize(Method:TThreadMethod)中的Method带否参数?  
  以下是我自己写的一个   MyThread.pas,一运行就有如下出错提示:  
   
  unit   MyThread;       //MyThread.pas  
   
  interface  
   
  uses  
      Windows,   SysUtils,Classes,StdCtrls;  
   
  type  
      TMyThread   =   class(TThread)  
      private  
          {   Private   declarations   }  
          ED:TEdit;  
          procedure   InitEdit;             //初始化Edit  
          procedure   UpdateEdit(CostTime:Integer);       //修改Edit  
      protected  
          procedure   Execute;   override;  
      published  
          constructor   CreateIt(ED:TEdit);  
      end;  
   
  implementation  
   
  //------------------------------------------------------------------------------  
  constructor   TMyThread.CreateIt(ED:TEdit);  
  begin  
        inherited   Create(true);  
        FreeOnTerminate   :=   true;  
        Synchronize(InitEdit);  
        Suspended:=false;  
  end;  
  //------------------------------------------------------------------------------  
  procedure   TMyThread.InitEdit;       //初始化Edit  
  begin  
        ED.Text:='';  
  end;  
  //------------------------------------------------------------------------------  
  procedure   TMyThread.UpdateEdit(CostTime:Integer);       //修改Edit  
  begin  
        ED.Text:=IntToStr(CostTime);  
  end;  
  //------------------------------------------------------------------------------  
  procedure   TMyThread.Execute;  
  var  
        StartTicker,EndTicker:integer;  
        i,j:integer;  
  begin  
      {   Place   thread   code   here   }  
          StartTicker   :=   GetTickCount;  
          i:=0;  
          for   i:=0   to   100000   do  
          begin  
                  j:=GetTickCount-StartTicker;  
   
                  Synchronize(UpdateEdit(j));   --------------------------------------执行此句出错!  
                  //错误提示:Incompatible   types:"TThreadMethod"and   "procedure,untyped   pointer   or    
                                    //untyped   parameter"  
          end;  
  end;  
   
  end.  
   
  先谢了!!!  
  问题点数:0、回复次数:6Top

1 楼ocean617(海洋)回复于 2004-12-02 15:01:05 得分 0

Synchronize里面不可以有方法的,你这个程序的处理错了,应该把  
          i:=0;  
          for   i:=0   to   100000   do  
          begin  
                  j:=GetTickCount-StartTicker;  
   
                  Synchronize(UpdateEdit(j));   --------------------------------------执行此句出错!  
                  //错误提示:Incompatible   types:"TThreadMethod"and   "procedure,untyped   pointer   or    
                                    //untyped   parameter"  
          end;  
   
  这一段处理到UpdateEdit这个方法里面,在这个方法里面进行工作才对  
   
  我们可不是老师哦:PTop

2 楼ocean617(海洋)回复于 2004-12-02 15:04:31 得分 0

Synchronize里面执行的是一个不带参数的过程的Top

3 楼chenyf2006()回复于 2004-12-02 15:20:45 得分 0

多谢   ocean617(海洋)   !!!Top

4 楼chenyf2006()回复于 2004-12-10 08:59:33 得分 0

结贴吧!Top

5 楼beyondtkl(大龙驹<*好久没来了,兄弟们好吧。*>)回复于 2004-12-10 09:12:47 得分 0

TThreadMethod   =   procedure   of   object;  
   
  Synchronize(Method:TThreadMethod)  
  Method 是一個函數指針 可以指向任何沒有返回值的成員過程member   procedure...  
  Top

6 楼cyblueboy83(爱情白痴—电脑迷)回复于 2004-12-10 13:10:06 得分 0

Synchronize里面执行的是一个不带参数的过程的??  
  那如果要执行带参数的方法,怎么办呢?  
  Top

相关问题

  • 线程有关Synchronize
  • 关于线程的synchronize()
  • 线程
  • 在线程中ADO控件需不需要用Synchronize保持与主线程同步
  • 关于线程(为什么我用synchronize进不了)
  • 请问关于线程之Synchronize函数的问题
  • 关于线程中Synchronize()函数的调用问题!
  • 线程中的synchronize(procedure A) 这个synchronize加不加为何都一样?
  • 多线程啊多线程
  • Synchronize这个东东有什么用?我知道是线程同步使用的

关键词

  • 执行
  • tthreadmethod
  • updateedit
  • initedit
  • untyped
  • synchronize
  • tmythread
  • 带参数
  • 老师
  • tedit

得分解答快速导航

  • 帖主:chenyf2006

相关链接

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

广告也精彩

反馈

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