C# 程序中的延迟,如sleep()

C# 程序中的延迟,如sleep(),c#,C#,我有一个关于Visual Studio 2010 C sharp延迟的问题。 我需要在发送位置到伺服程序的时间延迟。现在我正在使用System.Threading.Thread.Sleep(200))但是我需要可以中断的延迟 当我使用睡眠时,该程序在睡眠期间不起作用。(单击按钮,轨迹栏移动…),但我必须在延迟期间控制程序 VS中存在什么样的功能睡眠 非常感谢您的回复 Martin您可以使用任务。延迟: 您可以使用任务。延迟: 将异步函数与取消令牌一起使用 下面是一个简单的例子: bool s

我有一个关于Visual Studio 2010 C sharp延迟的问题。 我需要在发送位置到伺服程序的时间延迟。现在我正在使用System.Threading.Thread.Sleep(200))但是我需要可以中断的延迟

当我使用睡眠时,该程序在睡眠期间不起作用。(单击按钮,轨迹栏移动…),但我必须在延迟期间控制程序

VS中存在什么样的功能睡眠

非常感谢您的回复


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
        }
    }