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 declaration
和Error 2 'System.Threading.Thread.Sleep(System.TimeSpan)' is a 'method' but is used like a 'type'
两个要点:
范围
从问题的角度来看,您正在从无效的作用域调用它。不能从类作用域调用方法。在这种情况下,您必须定义一个作用域(如示例中的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);
}
}