我想知道是否有人知道如何避免在以下代码中重新运行 If 语句
int x = 1;
load_page(standurl, 0);
firstentryOnload = UrlList[0];
for (int i = 1; i <= lastPage; i++)
{
if (UrlList.Count > setting_EPP) table_populate(0);
System.Threading.Thread.Sleep(delay);
load_page(standurl, i);
if (x > 10)
{
//refresh firstpage,check for new data
System.Threading.Thread.Sleep(delay);
x = 1;
}
x++;
}
我想运行 table_populate(0);当 UrlList.Count > setting_EPP
没有“If/Then”检查每个循环。
基本上我希望它运行一次 If 语句然后停止存在。
我知道如何阻止 if/then 语句运行,但我不希望它在运行后继续检查
编辑:循环在后台运行,目前需要大约 4 小时才能运行完成。我一直在尝试找到某种方法将其置于循环之外,但是我运气不佳。我唯一能想到的是在运行上述代码的线程旁边运行另一个线程,每隔几分钟运行一次 If 语句?
您可以将条件包装在委托(delegate)中,并在满足条件时替换委托(delegate):
Action check;
check = ()=> {
if (UrlList.Count > setting_EPP)
{
table_populate(0);
check = () => {}; // replace check with no-op.
}
};
....
for(...)
{
check();
...
}
此代码由受过培训的专业人员在封闭类(class)中编写,请勿在家尝试(或任何非自学代码)。 :)
更传统的模式 - 有标志说“满足条件,不再检查” - 但实际上它需要 if
语句。
注意:如果此代码检查共享日期,您需要使用 lock
或其他同步方法(即并发集合之一)。
我是一名优秀的程序员,十分优秀!