Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何使用TIdTCPClient实现进度条?_Delphi_Indy - Fatal编程技术网

Delphi 如何使用TIdTCPClient实现进度条?

Delphi 如何使用TIdTCPClient实现进度条?,delphi,indy,Delphi,Indy,我正在使用indy 10,我想知道如何实现用于传输文件的进度条。我尝试了onWork事件,但它们没有触发。我发现的另一件事是,应用程序在下载流之前会冻结 我做错了什么?将IdAntiFreeze组件添加到表单中,并使用其属性和事件获取网络操作进度的通知。您可以使用TThread将下载代码放入另一个线程中,这样您的应用程序在下载时不会冻结,并将一个过程发送到TThread.Synchronize以更新进度条。另外,要调用OnWork,您必须首先调用OnWorkBegin,请参见您可以使用进度反馈对

我正在使用indy 10,我想知道如何实现用于传输文件的进度条。我尝试了onWork事件,但它们没有触发。我发现的另一件事是,应用程序在下载流之前会冻结


我做错了什么?

将IdAntiFreeze组件添加到表单中,并使用其属性和事件获取网络操作进度的通知。

您可以使用
TThread
将下载代码放入另一个线程中,这样您的应用程序在下载时不会冻结,并将一个过程发送到
TThread.Synchronize
以更新进度条。另外,要调用
OnWork
,您必须首先调用
OnWorkBegin
,请参见

您可以使用进度反馈对后代流类进行检测。任何时候您必须使用
tideantifreement
,您通常都没有使用正确的设计开始。在这种情况下,最好将
TIdTCPClient
移动到一个单独的工作线程中,这样在传输过程中主线程就不会被阻塞。如果这不是一个选项,那么您至少可以从
OnWork…
事件内部调用
TForm
TProgressBar
Update()。