0

ftp サーバーからアプリケーションを自動アップロードし、2 つのプログレスバーを使用して、全体および現在のダウンロード状態を更新します。最初のものは正常に動作します (update% = currentFile as int / allFilesToDownload *100%)。しかし、現在ダウンロードしているファイルをアップロードしたいと思います。私のコード:

Uri url = new Uri(sUrlToDnldFile);

                    int inde = files.ToList().IndexOf(file);
                    string subPath = ...
                    bool IsExists = System.IO.Directory.Exists(subPath);
                    if (!IsExists)
                        System.IO.Directory.CreateDirectory(subPath);
                    sFileSavePath = ...
                    System.Net.FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(file));

                    System.Net.FtpWebResponse response = (System.Net.FtpWebResponse)request.GetResponse();
                    response.Close();
                    long iSize = response.ContentLength;
                    long iRunningByteTotal = 0;

                    WebClient client = new WebClient();

                    Stream strRemote = client.OpenRead(url);

                    FileStream strLocal = new FileStream(sFileSavePath, FileMode.Create, FileAccess.Write, FileShare.None);

                    int iByteSize = 0;

                    byte[] byteBuffer = new byte[1024];

                    while ((iByteSize = strRemote.Read(byteBuffer, 0, byteBuffer.Length)) > 0)
                    {
                        strLocal.Write(byteBuffer, 0, iByteSize);
                        iRunningByteTotal += iByteSize;
//THERE I'D LIKE TO UPLOAD CURRENT FILE DOWNLOAD STATUS
                        string a = iByteSize.ToString();
                        double b = double.Parse(a.ToString()) / 100;
                        string[] c = b.ToString().Split(',');
                        int d = int.Parse(c[0].ToString());
                        update(d);
//update(int prog) {  bgWorker2.ReportProgress(prog); }


                    }

                    double dIndex = (double)(iRunningByteTotal);
                    double dTotal = (double)iSize;
// THIS CODE COUNTING OVERAL PROGRESS - WORKS FINE
                    double iProgressPercentage1 = double.Parse(ind.ToString()) / double.Parse(files.Count().ToString()) * 100;
                    ind++;
                    string[] tab = iProgressPercentage1.ToString().Split(',');

                    int iProgressPercentage = int.Parse(tab[0]);
                    currentFile = file;
                    bgWorker1.ReportProgress(iProgressPercentage);
                    strRemote.Close();

残念ながら、別のプロセスがそれを使用しているため、progressBar2を更新できないというエラーがまだ発生しています。それを行う方法はありますか?ありがとう

4

1 に答える 1