请问:在一个线程里是否可以调用别的类的函数呢?

lovecbuilder 2001-06-07 07:54:00
假如我有一个函数是类dd的是不是这样就可以了:dd->function(),那synchrinize(dd->function())对吗?
谢谢喽。快乐!
...全文
144 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jinglihui 2001-06-07
  • 打赏
  • 举报
回复
你这样做,在以后的调试是很麻烦的!
你可以这样做:把这个函数声明为线程类的成员函数,这样你就不需要处理线程的同步事件了!
在线程中尽量不要用全局变量和主VCL的成员或是变量,如果非用不可的话 你可以声明全局的TCriticalSection的实例把全局变量或是主线程的成员或是变量保护起来,这样全局变量就是线安全的了!
TCriticalSection * CrtlSection=new TCriticalSection;//必须是声明成全局的
CrtlSection->Acquire();
//全局变量
CrtlSection->Release();

对于Synchromize, 是这样的
void __fastcall TMyThread::fun(void)

{
Button1->Click();
}

void __fastcall TMyThread::Execute()
{
...
Synchronize(fun);//只是函数名,不用事括号
...
}
Synchronize(fun)方法本质上是把fun嵌入主VCL线程中执行,从而保证了线程的安全

lovecbuilder 2001-06-07
  • 打赏
  • 举报
回复
这个函数写在另外的一个UINT里面可以直接调用吗?
comanche 2001-06-07
  • 打赏
  • 举报
回复
Synchromize 是对VCL同步用的,你的不要这样,你应建立个临界对像,对 dd->Function访问到的变量保护,如果 Function中只使用了Local variable, 那就好办了,直接调用。

13,874

社区成员

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

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