ファイルを要求している間に重みを追加するコードを実装し、FTP経由でファイルをダウンロードしたときに追加された重みを減算する必要があります。変数(count_server)が開始時の値と等しくない
私は論理を誤解していますが、わかりませんでした。
現在、何が起きているのか、count_server1/count_server2/count-server3にはいくらかの金額が残っており、最後には0には達しません。
割り当てられた実際の重量は差し引かれていないことを意味します。そのため、これらの変数には何らかの価値が残っています。
これらの変数値を使用してプログレスバーを設定しています。
コメントご質問がありません。
protected void start_download()
{
//Other actions
for (int i = 1; i <= filecount; i++)
{
balance_load(filename, trnsfrpth);
}
}
protected void Timer1_Tick(object sender, EventArgs e)
{
e1.Style.Add("width", count_server1 + "%");
e1.InnerHtml = count_server1.ToString();
e2.Style.Add("width", count_server2 + "%");
e2.InnerHtml = count_server2.ToString();
e3.Style.Add("width", count_server3 + "%");
}
int weight;
public void count_weight()
{
if (extension == ".jpeg" || extension == ".bmp" || extension == ".jpg" || extension == ".gif" || extension == ".png")
{
weight = 1;
}
if (extension == ".mp3")
{
weight = 5;
}
if (extension == ".mp4" || extension == ".avi" || extension == ".mov" || extension == ".mkv" || extension == ".wmv" || extension == ".flv")
{
weight = ((int)filesize/2);
}
}
int P;
public void balance_load(string filename, string trnsfrpth)
{
count_weight();
P = weight;
if ((count_server1 <= count_server2) && (count_server1 <= count_server3))
{
//FTP request creation and providing credentials
count_server1 += P;
ftpClient_s1.DownloadFileCompleted += DownloadFileCompleted_s1();
ftpClient_s1.DownloadFileAsync(new Uri(path), trnsfrpth);
}
else if (count_server2 <= count_server1 && count_server2 <= count_server3)
{
//FTP request creation and providing credentials
count_server2 += P;
ftpClient_s2.DownloadFileCompleted += DownloadFileCompleted_s2();
ftpClient_s2.DownloadFileAsync(new Uri(path), trnsfrpth);
}
else if (count_server3 <= count_server1 && count_server3 <= count_server2)
{
//FTP request creation and providing credentials
count_server3 += P;
ftpClient_s3.DownloadFileCompleted += DownloadFileCompleted_s3();
ftpClient_s3.DownloadFileAsync(new Uri(path), trnsfrpth);
}
else
{}
}
public AsyncCompletedEventHandler DownloadFileCompleted_s1()
{
Action<object, AsyncCompletedEventArgs> action = (sender, e) =>
{
count_server1 -= P;
};
return new AsyncCompletedEventHandler(action);
}
public AsyncCompletedEventHandler DownloadFileCompleted_s2()
{
Action<object, AsyncCompletedEventArgs> action = (sender, e) =>
{
count_server2 -= P;
};
return new AsyncCompletedEventHandler(action);
}
public AsyncCompletedEventHandler DownloadFileCompleted_s3()
{
Action<object, AsyncCompletedEventArgs> action = (sender, e) =>
{
count_server3 -= P;
};
return new AsyncCompletedEventHandler(action);
}