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 declaration
和 Error 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 成员一样;这是完全错误的。
您应该在方法体内调用它。
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'
我正在使用 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 成员一样;这是完全错误的。
您应该在方法体内调用它。