我正在尝试让我的帐户通过任务进行多次登录。我绝不是专家,我才刚刚开始,但我遇到了以下问题。
由于某种原因,任务不断循环,但它们不应该循环。我实在无法弄清楚问题出在哪里,所以我想这里有人可能知道解决方案。
public async void Login()
{
for (int i = 0; i < objectsToCreate; i++)
{
try
{
this.Invoke((MethodInvoker)delegate()
{
MyEmail = listView1.Items[i].SubItems[0].Text;
MyPassword = listView1.Items[i].SubItems[1].Text;
MySecurity = listView1.Items[i].SubItems[2].Text;
});
var loginDetails = new LoginDetails(MyEmail, MyPassword, MySecurity, Platform.Ps3);
client[i] = new FutClient();
var loginResponse = await client[i].LoginAsync(loginDetails);
MessageBox.Show("Succesful login");
}
catch (Exception ex)
{
string foutMelding = ex.InnerException.ToString();
ListViewItem exception = new ListViewItem(time);
exception.SubItems.Add(foutMelding);
listView2.BeginInvoke(new MethodInvoker(() => listView2.Items.Add(exception)));
}
}
}
public void StartLogin()
{
Task[] tasks = new Task[objectsToCreate];
for (int i = 0; i < objectsToCreate; i++)
{
tasks[i] = new Task(() => Login());
}
foreach (Task task in tasks)
{
task.Start();
}
}
我使用表单中的按钮调用 StartLogin 方法。然后它继续登录帐户,但由于某种原因任务不断循环,我真的无法找出原因,因为我才刚刚开始使用任务。如果有人能帮助我,我将非常感激。
最佳答案
它不会无限循环 - 它恰好执行 16 次。这是因为您本质上有一个双重嵌套的 for 循环 - 一个在 StartLogin 方法中,另一个在您的 Login 方法中。也许您不希望每次调用 Login 方法时,Login 方法的内容都会执行 4 次?
关于c# - 任务在应该完成的时候一直循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27028463/