我的应用会向CheckedListBox
中的选定群组发送消息。我希望在程序发送消息时使用Progressbar
。
foreach (object item in checkedListBox1.CheckedItems)
{
if (item.ToString() == gi.name) //don't read
{
if (txtBoxPath.Text == string.Empty) //don't read
{
try
{
Dictionary<string, object> args = new Dictionary<string, object>();
args["message"] = txtBoxStatus.Text;
fb.Post(gi.id + "/feed", args);
sCount = checkedListBox1.CheckedItems.Count;
for (int i = 0; i < sCount; i++)
{
backgroundWrkSendPOST.ReportProgress(100 / sCount); //****HERE****
}
}
catch (FacebookApiException ex)
{
MessageBox.Show("ERRO:" + Environment.NewLine + ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
.......
其中:sCount(int):表示已检查列表框中已检查项目的数量。 因此,遵循数学规则,对于选择的每个项目{y}(foreach函数中的项目)应该为100%/ {y}复制,这意味着最终应该是100%。但似乎foreach函数没有读取后台工作,也没有多重。
我们调试时的输出:
有人能帮助我吗?最后,此进度条应保持100%。
答案 0 :(得分:1)
如果我说得对,你检查了2个项目(sCount=2
),并且循环两次(i<sCount
)并使用相同的值(100/2)调用ReportProgress
。
输出始终为50,因此ProgressBar始终显示50
也就不足为奇了我会尝试以这种方式更改您的代码
sCount = checkedListBox1.CheckedItems.Count;
// Supposing that you could access your ProgressBar in this point
pBar.Maximum = sCount;
pBar.Minimum = 0;
for (int i = 0; i < sCount; i++)
{
backgroundWrkSendPOST.ReportProgress(i);
}