zoukankan      html  css  js  c++  java
  • c++builder XE8 线程 Thread 匿名线程 CreateAnonymousThread

     thread Thread  c++builder XE8 / RAD 10 Settle

           TThread.Synchronize(nil, procedure
          begin
            Memo1.Lines.Add('Server has NOT resume download feature');
          end);

    delphi

    TThread.CreateAnonymousThread(MyMethod).Start;

     TThread.Synchronize(TThread.CurrentThread, GetImage);//Synchronize阻塞执行同步

    匿名线程中调用单击事件
        TThread.CreateAnonymousThread(
          procedure()
          begin
            Button1.Click();
          end).Start;

     

    get CreateAnonymousThread handler

     Thread := TThread.CreateAnonymousThread(My_Own_Procedure);

    Thread.OnTerminate := MyThreadTerminated;

    Thread.Start;

    https://forums.embarcadero.com/thread.jspa?threadID=171738

    TThread.Synchronize (TThread.CurrentThread,
      procedure ()
      begin
      end);
      end);

    匿名线程,函数线程

    void __fastcall TForm3::GetImage()
    {
    ;
    }
    
    void __fastcall TForm3::Button1Click(TObject *Sender)
    {
    TThread::Synchronize(TThread::CurrentThread, GetImage);
    
    }

    上面的写法并不是创建新线程。也不是匿名线程的用法,达不到线程的效果。这个是通知主线程执行代码,也就是这个代码必须在子线程里(匿名线程也可以)里的用于更新VCL界面的,所以才用到,普通的VCL没有任何线程的代码写这个毫无意义。

    是不是以前的TThread.CreateAnonymousThread

    最早是这样http://blog.csdn.net/luozhuang/article/details/29827763

    c++匿名线程,XE8也没有官方的实例,RAD 10 Settle才有了。

        TThread::CreateAnonymousThread([this]
        {
            if (!BluetoothLE1->DiscoveredDevices->Items[ListBox1->ItemIndex]->DiscoverServices())
            {
                TThread::Synchronize(NULL, [this]
                {
                    ListBox2->Items->Add("- Discover services not allow");
                    ListBox1->Enabled = true;
                });
            }
        })->Start();
        TThread::CreateAnonymousThread(AnonymousLambda(&this->SampleDownload))->Start();

    简化版匿名线程

        TThread::CreateAnonymousThread([this]
        {
            TThread::Synchronize(NULL, [this]
            {
                Caption = Now();
    Sleep(5000);
    Caption = "end"; }); })
    ->Start();

    匿名线程调用函数,这个就比较好用了。只能在新版编译器bcc32c使用,bcc32不支持语法。

    void __fastcall TForm3::GetImage()
    {
        this->Caption = Now();
        Sleep(5000);
    //Query->ExecSQL();执行sql或存储过程
    //Query->Open();
    Caption = "end";
    } 

    void __fastcall TForm3::Button1Click(TObject *Sender)
    {
    TThread::CreateAnonymousThread([
    this] {GetImage();})->Start();
    }
        TThread::CreateAnonymousThread([this](){
            TThread::Synchronize(TThread::CurrentThread, [this]()
            {
                Button1->Click();
            });
        })->Start();

    看原始定义参数是_di_TProc,还有下面这种写法

    TTask::Run( _di_TProc(new TCppTask(5000, MoveUpAnim, Button1)) );

    http://community.embarcadero.com/index.php/blogs/entry/spinning-icons-to-visually-queue-load-states-using-true-type-font-pack-font-awesome

    http://blog.appmethod.com/spinning-icons-to-visually-queue-load-states-using-true-type-font-pack-font-awesome

    CurThread: TThreadID;

    CurThread := GetCurrentThreadID;

    界面 无延迟无卡顿,用clang编译器

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
        TTask::Run([]()
            {
                Sleep(2000);
                ShowMessage("aaa");
            }
    
        );
    }

     DWORD WINAPI  PollThread(LPVOID pParam)/线程函数

     hThread = CreateThread ( NULL, 0, PollThread, this, 0, NULL );

  • 相关阅读:
    番茄土豆:小小生产力工具
    ubuntu下thrift的安装
    番茄工作法:试试看?
    python利用thrift连接hive
    如何预测用户query意图 « 搜索技术博客-淘宝
    笔记:Ubuntu下快速开始使用Python Thrift | 孙立文的博客
    hive使用
    checkout centos is x86_64 or 32bit
    溢泰的休閒世界 溢泰的 CentOS 5.x 系統與內建軟體安裝筆記整理
    番茄工作法_Feisky_新浪博客
  • 原文地址:https://www.cnblogs.com/cb168/p/4786394.html
Copyright © 2011-2022 走看看