我定义个全局临界区变量:
var
  Form1: TForm1;
  TaskQueueCS: TRTLCriticalSection; //临界区
  //在窗体创建事件中写,InitializeCriticalSection(TaskQueueCs);
  //在窗体的Close事件中写,DeleteCriticalSection(TaskQueueCs);
  
//我的疑问如下:
//按钮1点击 进入临界区(但是没有退出临界区)
procedure TForm1.Button1Click(Sender: TObject);
begin
   EnterCriticalSection(TaskQueueCs);
   Edit1.Text:='111';  //把edit1.text变为 111
end;//按钮2也进入临界区 edit2.text变为222
为什么这里也可以进入临界区?????
临界区只能在多线程中才有效果么?????
procedure TForm1.Button2Click(Sender: TObject);
begin
   EnterCriticalSection(TaskQueueCs);
   Edit1.Text:='222';
end;

解决方案 »

  1.   

    EnterCriticalSection(TaskQueueCs); 
      Edit1.Text:='111';  //把edit1.text变为 111 
    LeaveCriticalSection(TaskQueueCs);
      

  2.   

    楼上的,我就是想问  我button1中没有离开临界区,
    为什么button2中也可以进入临界区,并修改eidt1.text中的内容呀??
      

  3.   

    把《Delphi5开发人员指南》第11章看一遍,
    那里比较详细点,