zoukankan      html  css  js  c++  java
  • 【转】利用线程更新ListView (2014-09-28 08:25:20)

    http://blog.sina.com.cn/s/blog_44fa172f0102v2x0.html

    procedure TForm5.Button3Click(Sender: TObject);
    begin
      TThread.CreateAnonymousThread(procedure ()
      var
        I: Integer;
        Total: Integer;
      begin
        Total := 0;
        for I := 1 to MaxValue do
        begin
          if (I * 10 mod MaxValue) = 0 then
            TThread.Synchronize (TThread.CurrentThread,
              procedure ()
              begin
                ListView1.Items.Add.Text := 'Th: ' + I.ToString;
              end);

          if IsPrime (I) then
            Inc (Total);
        end;

        TThread.Synchronize (TThread.CurrentThread,
          procedure ()
          begin
            ListView1.Items.Add.Text := 'Thread: ' + Total.ToString;
            NotifyComplete;
          end);
      end).Start;
    end;

    笔者测试,xe6可以编译通过,xe7无法编译通过。
        TThread.CreateAnonymousThread(
          procedure()
          begin
            TThread.Synchronize(TThread.CurrentThread,
              procedure()
              begin
                button1.Text := 'aaaa';
              end);
          end).Start;

    10.8放假回来,xe7又可以编译上面的代码了!
    10.10.反复的修改代码,发现无法编译的代码是在Synchronize中引用了局部循环变量,如果再声明一个临时变量来取代这个循环变量,就可以编译通过。

    原文

    http://www.dfwlt.com/forum.php?mod=viewthread&tid=711

  • 相关阅读:
    basic-linux
    巧用border属性
    git常用操作笔记
    如何删除github里的项目
    常用css3属性的ie兼容查看
    新建pc端页面的模板
    HTML5 Shiv--解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
    进程和线程
    C++对象模型---第 4 章 Function语意学
    C++对象模型---第 3 章 Data语意学
  • 原文地址:https://www.cnblogs.com/westsoft/p/8458775.html
Copyright © 2011-2022 走看看