在Delphi中实现C#的BackgroundWorker的最佳方法是什么?

Dav*_*ave 8 delphi multithreading

我经常使用C#的BackgroundWorker对象来启动线程并执行任务.在Delphi中完成同样事情的最简单方法是什么?

这是C#中的一些代码:

private void button1_Click(object sender, EventArgs e)
{
  BackgroundWorker bg = new BackgroundWorker();
  bg.DoWork += new DoWorkEventHandler(bg_DoWork);
  bg.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bg_RunWorkerCompleted);
  test_number++;
  object[] arguments = { "test", test_number };
  bg.RunWorkerAsync(arguments);
}

void bg_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
      // done.
}

void bg_DoWork(object sender, DoWorkEventArgs e)
{
     // do actual work here
}
Run Code Online (Sandbox Code Playgroud)

mgh*_*hie 16

考虑OmniThreadLibrary通过普里莫兹Gabrijelcic,或进入AsyncCalls由Andreas Hausladen,这都应该给你类似的功能.