我有一些操作,有时我想停在中间:
bool contine;
foreach (var item in this)
{
if (contine)
{
// do my stuss
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题,foreach有时我需要特定的延迟时间,所以我正在使用Thread.Sleep.因此,当我停止我的操作以防我仍在其中时,Thread.Sleep我的应用程序正在等到此Thread.Sleep结束并且只停止我的操作所以我可以从Thread.Sleep中间退出吗?
更新
我需要特定睡眠的原因是因为我正在播放数据包,并且每个数据包之间都有一个Time stamp因此这就是我需要这个睡眠的原因.
您可以使用也可以取消的Task.Delay.
private void Method(CancellationToken token)
{
foreach (var item in this)
{
if (!token.IsCancellationRequested)
{
// do my stuss
Task.Delay(1000, token).Wait(); // use await for async method
}
else break; // end
}
}
Run Code Online (Sandbox Code Playgroud)
当你想打电话
var source = new CancellationTokenSource();
Method(source.Token);
Run Code Online (Sandbox Code Playgroud)
当你想取消.
source.Cancel();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |