C# 程序中的延迟,如sleep()
我有一个关于Visual Studio 2010 C sharp延迟的问题。 我需要在发送位置到伺服程序的时间延迟。现在我正在使用System.Threading.Thread.Sleep(200))但是我需要可以中断的延迟 当我使用睡眠时,该程序在睡眠期间不起作用。(单击按钮,轨迹栏移动…),但我必须在延迟期间控制程序 VS中存在什么样的功能睡眠 非常感谢您的回复C# 程序中的延迟,如sleep(),c#,C#,我有一个关于Visual Studio 2010 C sharp延迟的问题。 我需要在发送位置到伺服程序的时间延迟。现在我正在使用System.Threading.Thread.Sleep(200))但是我需要可以中断的延迟 当我使用睡眠时,该程序在睡眠期间不起作用。(单击按钮,轨迹栏移动…),但我必须在延迟期间控制程序 VS中存在什么样的功能睡眠 非常感谢您的回复 Martin您可以使用任务。延迟: 您可以使用任务。延迟: 将异步函数与取消令牌一起使用 下面是一个简单的例子: bool s
Martin您可以使用
任务。延迟
:
您可以使用任务。延迟: 将异步函数与取消令牌一起使用 下面是一个简单的例子:
bool sendPos = true;
public async Task SomeFunction(CancellationToken token)
{
while (sendPos)
{
SendServoPos();
await Task.Delay(1000, token)
}
}
public void MainFunction()
{
var tokenSource = new CancellationTokenSource();
// Fire and Forget - Note it will silently throw exceptions
SomeFunction(tokenSource.Token)
// Cancel Loop
sendPos = false;
tokenSource.Cancel();
}
将异步函数与取消令牌一起使用
下面是一个简单的例子:
bool sendPos = true;
public async Task SomeFunction(CancellationToken token)
{
while (sendPos)
{
SendServoPos();
await Task.Delay(1000, token)
}
}
public void MainFunction()
{
var tokenSource = new CancellationTokenSource();
// Fire and Forget - Note it will silently throw exceptions
SomeFunction(tokenSource.Token)
// Cancel Loop
sendPos = false;
tokenSource.Cancel();
}
您可以在异步任务中运行流程,而无需阻止应用程序。。并使用Task.Delay()(它唯一阻止当前任务)
您可以在异步任务中运行流程,而无需阻止应用程序。。并使用Task.Delay()(它唯一阻止当前任务)
由于您使用的是VS2010,因此将无法访问C#5功能(异步/等待关键字),并且很可能仅限于.NET 4.0。不幸的是,该版本没有该方法 如果是这种情况,最简单的选择可能是使用或根据您的需要。两者都将在延迟后在线程池线程上执行方法。你可以在滴答声之前停止这两个词,它们都支持“无限”句点 停止线程计时器不明显,请使用此方法
上面的链接有很好的使用示例 由于您使用的是VS2010,因此您将无法访问C#5功能(异步/等待关键字),并且很可能仅限于.NET 4.0。不幸的是,该版本没有该方法 如果是这种情况,最简单的选择可能是使用或根据您的需要。两者都将在延迟后在线程池线程上执行方法。你可以在滴答声之前停止这两个词,它们都支持“无限”句点 停止线程计时器不明显,请使用此方法
上面的链接有很好的使用示例 我想你可能有一些混合的语言在那里哈哈。C语言中没有
函数
关键字#我想你可能混合了几种语言哈哈。C#中没有函数
关键字,当你说“存在于VS.中的东西”时。你的真正意思是,“存在于.NET中的Visual Studio只是一个IDE,而不是一种语言。是的,我很抱歉,谢谢你的修复。当你说“存在于VS.中的东西”时,你的真正意思是,“存在于.NET中的Visual Studio只是一个IDE,而不是一种语言。是的,对不起,谢谢你的修理。
public async Task SomeWork()
{
while (someCondition)
{
//do some work
await Task.Delay(100);//milliseconds
}
}