我正在傳輸文件,並希望進度條顯示每個文件的實際進度。這對於15兆以下的文件工作正常,但文件大於此似乎導致我的應用程序凍結。如果我不爲進度條調用此代碼,這些較大的文件傳輸很好。C#進度條調用/委託問題
我試過各種不同的方式來處理與代表但沒有運氣。相反,他們可以用更小的文件但沒有更大的文件正常工作。
一些例子,工作...
pbFileProgress.Invoke((MethodInvoker)
delegate
{
pbFileProgress.Value = args.PercentDone;
});
而且,這種收集方法工作了較小的文件。
private delegate void SetProgressBarCallback(int percentDone);
public void UpdateProgressBar(object send, UploadProgressArgs args)
{
if (pbFileProgress.InvokeRequired)
{
var d = new SetProgressBarCallback(ProgressBarUpdate);
BeginInvoke(d, new object[] { args.PercentDone });
}
else
{
ProgressBarUpdate(args.PercentDone);
}
}
public void ProgressBarUpdate(int percentDone)
{
pbFileProgress.Value = percentDone;
}
但是,如果我嘗試更大的文件,一切都會凍結。
複製文件的代碼在哪裏?你怎麼做線程? –
請在計算完成百分比的位置包含代碼。由於您的問題與下載大小有關,因此很可能您嘗試頻繁更新進度欄(例如,您一次下載10個字節並每次更新進度欄;這對100字節文件,但15 MB文件失敗)。 – MusiGenesis
@MusiGenesis OP做了15MB以下的狀態文件,這可能意味着大於100字節,但仍可能是根本原因。 –