【发布时间】:2015-08-27 01:08:13
【问题描述】:
我目前正在编写一个程序,该程序需要我在执行任务之间暂停。
所以我有 4 样东西。
- 读取限制
- 每次读取之间的延迟
- 总读取次数
- 全局延迟(任务完成后程序暂停'x'秒)
基本上,一项任务被视为“读取限制”。因此,例如,如果我有这些设置:
- 读取限制 (10)
- 每次读取之间的延迟 (20)
- 总读取数 (100)
- 全局延迟 (30)
程序必须根据“读取限制”从文件中读取 10 行,并且在读取每一行之间,基于“每次读取之间的延迟”有 20 秒的延迟。读取 10 行后,根据“全局延迟”暂停 30 秒。当全局延迟结束时,它会从停止的地方重新开始并继续执行此操作,直到根据“Total Reads”达到 100 的限制。
我尝试过使用System.Threading.Thread.Sleep(),但无法成功。我怎样才能用 C# 实现这一点?
提前致谢。
//用我的一些代码更新。
我这样加载文件:
private void btnLoadFile_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
string[] lines = System.IO.File.ReadAllLines(ofd.FileName);
}
}
我有 4 个全局变量:
public int readLimit = 0;
public int delayBetweenRead = 0;
public int totalReads = 0;
public int globalDelay = 0;
public int linesRead = 0;
我想把函数做成这样:
private void doTask()
{
while (linesRead <= readLimit)
{
readLine(); // read one line
doDelay(); // delay between each line
readLine(); // read another line and so on, until readLimit or totalReads is reached
globalDelay(); // after readLimit is reached, call globalDelay to wait
linesRead++;
}
}
【问题讨论】:
-
如果您使用单词“任务”作为
Task- 比Task.Delay是您正在寻找的......但很难看出它是否真的与您的问题有关 - 考虑发布演示问题的小代码示例(以及“无法使其工作”部分) -
@AlexeiLevenkov 我已经用一些代码更新了帖子,我不确定
Task是否会在这里帮助我,我之前从未在我的任何项目中使用过Task。跨度>
标签: c# multithreading timer