Delphi 如何使用TIdTCPClient实现进度条?
我正在使用indy 10,我想知道如何实现用于传输文件的进度条。我尝试了onWork事件,但它们没有触发。我发现的另一件事是,应用程序在下载流之前会冻结Delphi 如何使用TIdTCPClient实现进度条?,delphi,indy,Delphi,Indy,我正在使用indy 10,我想知道如何实现用于传输文件的进度条。我尝试了onWork事件,但它们没有触发。我发现的另一件事是,应用程序在下载流之前会冻结 我做错了什么?将IdAntiFreeze组件添加到表单中,并使用其属性和事件获取网络操作进度的通知。您可以使用TThread将下载代码放入另一个线程中,这样您的应用程序在下载时不会冻结,并将一个过程发送到TThread.Synchronize以更新进度条。另外,要调用OnWork,您必须首先调用OnWorkBegin,请参见您可以使用进度反馈对
我做错了什么?将IdAntiFreeze组件添加到表单中,并使用其属性和事件获取网络操作进度的通知。您可以使用
TThread
将下载代码放入另一个线程中,这样您的应用程序在下载时不会冻结,并将一个过程发送到TThread.Synchronize
以更新进度条。另外,要调用OnWork
,您必须首先调用OnWorkBegin
,请参见您可以使用进度反馈对后代流类进行检测。任何时候您必须使用tideantifreement
,您通常都没有使用正确的设计开始。在这种情况下,最好将TIdTCPClient
移动到一个单独的工作线程中,这样在传输过程中主线程就不会被阻塞。如果这不是一个选项,那么您至少可以从OnWork…
事件内部调用TForm
或TProgressBar
的Update()。