【发布时间】:2013-01-19 13:03:19
【问题描述】:
我有一个关于 Delphi 中的多线程的问题。 假设,我有一个线程,我有一个类,它做一些工作并且必须有同步。我怎么能做到? 我做这个程序(在 ThreadClass 中):
procedure TThreadClass.SynchProc(P: TProc);
begin
...
Synchronize(TThreadProcedure(P));
...
end;
我在课堂上调用它,在 Thread 中运行,但是...... 在过程中,符号“同步”是 TThread 的一种方法,即对象“(Self as TThread)”,但是当我从我的类中调用它时,变量“Self”不包含我的 ThreadClass 对象(我不知道,它被包含,可能是第二类的对象,在线程中运行)。分别该程序不起作用。 我搜索其他变体(我将我的 threadClass 对象传递给第二类对象并尝试从第二类的过程中调用“同步”过程,但编译器不想编译它)。
你能帮帮我吗?将不胜感激任何帮助
来自乌克兰的问候 PS对不起我的英语不好
【问题讨论】:
-
现代德尔福有
Synchronize的类过程版本。你甚至需要Synchronize?这在主线程上运行代码。总是可以选择使用锁进行序列化。你应该告诉我们TThreadClass是什么。 -
我从程序的主线程调用我的线程,因为我需要执行(可能是英文中的“执行”)许多操作。但我也需要使用表单的组件——查看操作进度等。我需要专注于编辑向用户询问一些事情,等待用户回答并继续执行。没有同步,这是无法实现的,恕我直言。
-
如果您需要同步到主线程,那么是的,您需要调用 TThread.Synchronize。如果您确实要创建一个线程,那么您就可以这样做。
-
我可以从 Thread 执行此操作(调用我的 SynchProc),但不能从其他类的对象(即 ThreadClass 对象)执行此操作。这是我的问题。
标签: multithreading delphi class