【发布时间】:2014-01-29 12:13:43
【问题描述】:
我想为Delphi Borland 2006中的程序准备异步进程,你知道怎么做吗?
application.ProcessMessages;
dm001.Proc.Close;
dm001.Proc.Parameters.Clear;
dm001.Proc.ProcedureName:='[dbo].[EXAMPLE]';
dm001.Proc.Parameters.AddParameter.Name:='@idEXAMPLE';
dm001.Proc.Parameters.ParamByName('@id').DataType:="example";
dm001.Proc.Parameters.ParamByName('@id').Value:="example";
dm001.Proc.Open;
C# 中的示例
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
for (int i = 1; (i <= 10); i++)
{
if ((worker.CancellationPending == true))
{
e.Cancel = true;
break;
}
else
{
// Perform a time consuming operation and report progress.
System.Threading.Thread.Sleep(500);
worker.ReportProgress((i * 10));
}
}
}
或
private void buttonStart_Click(object sender, RoutedEventArgs e)
{
if (bw.IsBusy != true)
{
bw.RunWorkerAsync();
}
}
【问题讨论】:
-
TThread。它在帮助文件中。在您的 Delphi Demos 文件夹中有一个示例,在 Demos\DelphiWin32\VCLWin32\Threads 中。 -
在 D2006 中您需要使用线程。创建一个从
TThread派生的类。如果您使用的是现代 Delphi,则可以使用 OTL。 -
感谢帮助我会检查它。
-
另一个很好的例子:stackoverflow.com/a/18236774/327083
-
我的大多数用例都是从 tthread 派生并使用一个线程在后台执行某些操作,偶尔会有反馈,所以我想知道为什么一开始没有将其制成组件。
标签: multithreading delphi asynchronous delphi-2006