码迷,mamicode.com
首页 > 编程语言 > 详细

TRttiContext.DropContext线程不安全

时间:2020-03-04 10:02:03      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:sage   RoCE   show   span   get   png   大量   code   pre   

QC上有人提出,下面两个方法配对调用时,因线程不安全而出错,QC地址:https://quality.embarcadero.com/browse/RSP-27771

TRttiContext.KeepContext;
TRttiContext.DropContext;

我把提出者的代码改了下,测试结果果真如此,下面是测试代码:

procedure TForm61.Button1Click(Sender: TObject);
var
 i : Integer;
begin
  for i := 0 to 1000 do
  begin
//    TThread.CreateAnonymousThread(
//      procedure ()
//      var
//        j : Integer;
//      begin
//        for j := 0 to 100000 do
//        begin
//          TRttiContext.KeepContext;
//          TRttiContext.DropContext;
//        end;
//
//      end
//    ).Start;

  Scheduler.Run(procedure
                var
                  j : Integer;
                begin
                  for j := 0 to 100000 do
                  begin
                    TRttiContext.KeepContext;
                    TRttiContext.DropContext;
                  end;
                end)
           .WhenException(
                           procedure (const AException:Exception)
                           begin
                                ShowMessage(AException.Message);
                           end).Activate;

  end

end;

运行,会产生大量错误:

技术图片

 

TRttiContext.DropContext线程不安全

标签:sage   RoCE   show   span   get   png   大量   code   pre   

原文地址:https://www.cnblogs.com/kinglandsoft/p/12407552.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!