Thread.Sleep(Int32)不能在c#中工作

本文关键字:工作 不能 Sleep Int32 Thread | 更新日期: 2023-09-27 18:12:05

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。我做错了什么?

Thread.Sleep(Int32)不能在c#中工作

两个要点:

范围

从问题的角度来看,您正在从无效的作用域调用它。不能从类作用域调用方法。在这种情况下,您必须定义一个作用域(如示例中的Method)以使该代码工作并调用它。阅读更多关于。net作用域的信息。

睡眠

System.Threading.Thread类有一个称为Sleep的静态方法。这个方法有两个重载。第一个有一个参数,其中将int作为毫秒。第二个接受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));

来自MSDN关于线程的文档。睡眠法:

阻塞当前线程指定毫秒数。

结论

试试这样的代码:

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

和实例

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

Sleep()Thread类中的Static方法,而不是Instance方法。通过

这样的实例调用它的方式是无效的。
Thread t = new Thread();
t.sleep(100);

应该像下面这样通过类名表示,因为它是静态成员

Thread.Sleep(100);

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

应该在方法体中调用

你需要在方法内部。

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