Thread.Sleep(Int32) 不工作 C#

Thread.Sleep(Int32) does not work C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace Fuzzy.Test.DateTimeParserTests
{
    class TimeValidationTests
    {
        DateTime first = SayusiAndo.Tools.QA.BDD.Specflow.Fuzzy.Fuzzy.Parse("next week", DateTime.Now);
        Thread t = new Thread();
        t.Sleep(100);
    }
}

给我错误: Error 1 Invalid token '(' in class, struct, or interface member declarationError 2 'System.Threading.Thread.Sleep(System.TimeSpan)' is a 'method' but is used like a 'type'

我正在使用 System.Threading。我做错了什么?

两个要点:

范围界定

从您的问题角度来看,您是从无效范围调用它的。您不能从 class 范围调用方法。在这种情况下,您必须定义一个范围(如示例的方法)以使此代码有效并调用它。 Read more about scoping in .Net.

睡觉

System.Threading.Thread class has an static method called Sleep. This method has two overloads. The first one has an argument where an int is taken as milliseconds. The second one 接受一个 TimeSpan。查看示例:

// for 100 milliseconds
System.Threading.Thread.Sleep(100);

// for 5 seconds (using TimeSpan)
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(5));

// for 1 minute  (using TimeSpan)
System.Threading.Thread.Sleep(TimeSpan.FromMinutes(1));

来自关于 Thread.Sleep 方法的 MSDN 文档:

Blocks the current thread for the specified number of milliseconds.

结论

试试这样的代码:

class TimeValidationTests
{
  public void Interval()
  {
     // some code...
     Thread.Sleep(100);
  }
}

并实例化它

TimeValidationTests t = new TimeValidationTests();
t.Interval();

您需要在方法内部。

class TimeValidationTests
{
  public void NextWeek()
  {
     DateTime first = SayusiAndo.Tools.QA.BDD.Specflow.Fuzzy.Fuzzy.Parse("next week", DateTime.Now);
    Thread.Sleep(100);
  }
}

Sleep()Thread class 中的 Static 方法,而不是实例方法。您调用它的方式通过

这样的实例无效
Thread t = new Thread();
t.sleep(100);

它应该像下面通过 class 名称一样,因为它是静态成员

Thread.Sleep(100);

此外,根据@Scott Chamberlian 指出的,根据您发布的调用 Sleep 方法的代码,就好像它是您的 class TimeValidationTests 的 class 成员一样;这是完全错误的。

您应该在方法体内调用它。