TThread :: Synchronize()問題

xiaoya 2000-10-21 05:20:00
void __fastcall TMyThread::Execute(void)
{
i=0;
s = IntToStr(ThreadID);
s += " ";
while(!Terminated){
TThread::Synchronize((TThreadMethod)UpDate);
︿︿︿︿︿︿︿︿︿︿︿︿︿︿︿︿︿︿︿
             這裡有錯 :
          Member function must be called or its address taken.
i++;
}
}
void __fastcall TMyThread::UpDate(void)
{
mainForm->ListBox1->Items->Add(s + IntToStr(i));
}

這到底是什麽回事?例子里的程序也是這樣子的,難道 BCB 的幫助文件有錯?
...全文
596 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
luou 2001-09-11
  • 打赏
  • 举报
回复
结贴三
Ykang 2000-10-27
  • 打赏
  • 举报
回复
这样写编译才能通过;
Synchronize(Update);
我昨天在BCB4.0下编译运行均通过。
在BCB的Examples\apps\Threads\例子也是这么写的。
老魏2006 2000-10-27
  • 打赏
  • 举报
回复
TThread::Synchronize((TThreadMethod)UpDate);这一举写法又问题。
从CBuilder例子上看,上面这一句应该这样写:
TThread::Synchronize(UpDate);
不需要进强制转换,否则,UpDate会出问题。
TThread也不需要(加上也不会出错),除非在你的类里面,又重新定义了Synchronize。
如果遇到难题,可以看一看例子,就会明白了。
老魏2006 2000-10-27
  • 打赏
  • 举报
回复
TThread::Synchronize((TThreadMethod)UpDate);这一举写法又问题。
从CBuilder例子上看,上面这一句应该这样写:
TThread::Synchronize(UpDate);
不需要进强制转换,否则,会认为Update是一个函数调用,而不是认为是函数指针。
TThread也不需要(加上也不会出错),除非在你的类里面,又重新定义了Synchronize。
如果遇到难题,可以看一看例子,就会明白了。
xiaoya 2000-10-27
  • 打赏
  • 举报
回复
Thank Ykang and essypaper.
Now we can finish
Ykang 2000-10-26
  • 打赏
  • 举报
回复
这样写能通过:
Synchronize(Update);
本人确实在BCB4.0下通过。
Wingsun 2000-10-24
  • 打赏
  • 举报
回复
为什么你要调用父类的函数啊,不应该啊
xiaoya 2000-10-24
  • 打赏
  • 举报
回复
>>为什么加上“TThread::”?
因为 Synchronize() 是 TThread 的成员函数

问题并不是出在这里, 而是出他的实参部分. 在用一个 无参数的函数实参
的时候, 编译器不知道应该取的是作为参数的函数的地址还是函数的返回值给
Synchronize() 函数. 怎么办?
猛禽 2000-10-22
  • 打赏
  • 举报
回复
withluck说得对,你为什么加上“TThread::”?TThread中并没有UpDate啊。
猛禽 2000-10-22
  • 打赏
  • 举报
回复
withluck说得对,你为什么加上“TThread::”?TThread中并没有UpDate啊。
withluck 2000-10-22
  • 打赏
  • 举报
回复
我觉得应该这样写Synchronize((TThreadMethod)UpDate);

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧