有点陷入了一段时间的循环
本文关键字:一段时间 循环 | 更新日期: 2023-09-27 18:34:09
我只是看不出原因,而我的代码是这样的
private int getRandomId(string idpool)
{
Random rnd = new Random();
int id = rnd.Next(1, 9999);
if (idpool == "vm")
{
if (vms != null)
{
foreach (VirtualMachine vm in vms)
{
if (vm.id == id)
{ return 0; }
}
return id;
}
}
if (idpool == "job")
{
if (vms != null)
{
foreach (VirtualMachine vm in vms)
{
foreach (Job job in vm.jobs)
{
if (job.id == id)
{ return 0; }
}
}
return id;
}
}
return 0;
}
代码 2.
int id;
if (jobCreate_monday.Checked)
{
id = getRandomId("job");
while (id == 0)
{ getRandomId("job"); }
current_vm.jobs.Add(new Job(id, jobCreate_start.Value.Hour, jobCreate_start.Value.Minute, jobCreate_stop.Value.Hour, jobCreate_stop.Value.Minute, "Monday"));
}
if (jobCreate_tuesday.Checked)
{
id = getRandomId("job");
while (id == 0)
{ getRandomId("job"); }
current_vm.jobs.Add(new Job(id, jobCreate_start.Value.Hour, jobCreate_start.Value.Minute, jobCreate_stop.Value.Hour, jobCreate_stop.Value.Minute, "Tuesday"));
}.......more days.
现在,如果只检查星期一或仅检查星期二,一切正常。一旦选中其中两个或更多,程序就会冻结。也许我没有看到明显的东西?
此致敬意。
你永远不会将 id 分配给循环中的随机 id
id = getRandomId("job");
while (id == 0)
{ getRandomId("job"); }
应该是
id = getRandomId("job");
while (id == 0)
{ id = getRandomId("job"); }