c# - 有没有一种方法可以多次运行一个方法,每次运行前增加时间?
问题描述
到目前为止我有这个代码:
System.Threading.Thread.Sleep(2000);
(p.CommonWord,
p.JishoJlpt,
p.JishoWanikani,
p.JishoExists,
p.English,
p.Furigana,
p.JmdictId,
p.JmdictHiragana,
p.Kanji) = GetAll(block, 1);
if (p.Kanji == "kanj Id not found")
{
System.Threading.Thread.Sleep(5000);
(p.CommonWord,
p.JishoJlpt,
p.JishoWanikani,
p.JishoExists,
p.English,
p.Furigana,
p.JmdictId,
p.JmdictHiragana,
p.Kanji) = GetAll(block, 2);
}
if (p.Kanji == "kanj Id not found")
{
System.Threading.Thread.Sleep(10000);
(p.CommonWord,
p.JishoJlpt,
p.JishoWanikani,
p.JishoExists,
p.English,
p.Furigana,
p.JmdictId,
p.JmdictHiragana,
p.Kanji) = GetAll(block, 3);
}
if (p.Kanji == "kanj Id not found")
{
System.Threading.Thread.Sleep(20000);
(p.CommonWord,
p.JishoJlpt,
p.JishoWanikani,
p.JishoExists,
p.English,
p.Furigana,
p.JmdictId,
p.JmdictHiragana,
p.Kanji) = GetAll(block, 4);
}
if (p.Kanji == "kanj Id not found")
{
System.Threading.Thread.Sleep(30000);
(p.CommonWord,
p.JishoJlpt,
p.JishoWanikani,
p.JishoExists,
p.English,
p.Furigana,
p.JmdictId,
p.JmdictHiragana,
p.Kanji) = GetAll(block, 5);
}
if (p.Kanji == "kanj Id not found")
{
System.Threading.Thread.Sleep(60000);
(p.CommonWord,
p.JishoJlpt,
p.JishoWanikani,
p.JishoExists,
p.English,
p.Furigana,
p.JmdictId,
p.JmdictHiragana,
p.Kanji) = GetAll(block, 6);
}
if (p.Kanji == "kanj Id not found")
{
System.Threading.Thread.Sleep(1200000);
(p.CommonWord,
p.JishoJlpt,
p.JishoWanikani,
p.JishoExists,
p.English,
p.Furigana,
p.JmdictId,
p.JmdictHiragana,
p.Kanji) = GetAll(block, 7);
}
任何人都可以建议我如何简化这个并且仍然增加每次运行之间的时间。我想要的是从 5 秒延迟开始,每次 7 次迭代加倍,然后结束,即使在这 7 次尝试之后 p.Kanji 是“找不到 kanj Id”。
解决方案
// start with 5 seconds
int sleepTime = 5000;
for (int i = 0; i < 7; i++)
{
// do sleep
System.Threading.Thread.Sleep(sleepTime);
// double sleep time
sleepTime *= 2;
// execute
(p.CommonWord,
p.JishoJlpt,
p.JishoWanikani,
p.JishoExists,
p.English,
p.Furigana,
p.JmdictId,
p.JmdictHiragana,
p.Kanji) = GetAll(block, i+1);
// exit if necessary
if (p.Kanji != "kanj Id not found")
break;
}
推荐阅读
- python - 如何定期发送请求以更新 Python websocket-client 连接中的 listenKey 值(Python-Binance)
- java - 数组元素可以等于整数的名称而不是值吗?
- c++ - 是否可以使用在另一个 C++ 库中声明的静态变量
- python - 在Python中从二维数组(列表列表)中删除字符串列表的有效方法?
- .net - 无法加载文件或程序集“System.ServiceModel.Primitives,版本=4.5.0.4,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”
- wpf - WPF Controls.Webbrowser 不导航到 URL
- javascript - 如何获取 user_id 的“雪花”值?
- python - 蒙特卡罗模拟 - 一步生成 NxK 个随机变量或每个时间步生成 K 个随机变量 N 次
- python - 在 groupby 特定列之后查找最早日期
- javascript - react 创建动态组件