你的思路是正确的。 方法很多比如使用临界区 mainthread; ThreadLock: TRTLCriticalSection; InitializeCriticalSection(ThreadLock);thread1: EnterCriticalSection(ThreadLock); ... your work code LeaveCriticalSection(ThreadLock);thread2: EnterCriticalSection(ThreadLock); ... your work code LeaveCriticalSection(ThreadLock);最后在主线程要 DeleteCriticalSection可以去VCL看看 TThread的实现哦。。
mainthread;
ThreadLock: TRTLCriticalSection;
InitializeCriticalSection(ThreadLock);thread1:
EnterCriticalSection(ThreadLock);
... your work code
LeaveCriticalSection(ThreadLock);thread2:
EnterCriticalSection(ThreadLock);
... your work code
LeaveCriticalSection(ThreadLock);最后在主线程要
DeleteCriticalSection可以去VCL看看 TThread的实现哦。。
mainthread;
m_critical:Tcriticalsection;
m_critical:=Tcriticalsection.create; thread1:
m_critical.Acquire;
try
memoMsgt.Lines.Add('***********');
finally
m_critical.Release;
end;
但是这样好像没效果,请问TRTLCriticalSection有什么不同?
刚才说错了,是在主线程和线程1里都要访问memo,做法是一样吧