c#程序,有一个线程一直执行一个方法 每次执行完会睡眠200毫秒;现在想增加一个布尔变量,当这个变量是true的时候不需要睡眠200毫秒需要立马执行一次这个方法,这个变量是false的时候正常睡眠200毫秒再执行方法,代码实现
时间: 2024-09-10 19:08:38 浏览: 48
在C#中,你可以使用`Thread`类来创建线程,并通过布尔变量来控制是否跳过休眠。以下是一个简单的代码示例:
```csharp
class Program
{
static void Main(string[] args)
{
bool shouldSleep = true; // 初始状态为true,表示线程每次执行完后需要休眠200毫秒
Thread thread = new Thread(() =>
{
while (true) // 无限循环确保线程持续工作
{
// 执行方法的代码
MethodToRun();
// 检查布尔变量,决定是否需要休眠
if (shouldSleep)
{
Thread.Sleep(200); // 如果变量为true,则休眠200毫秒
}
// 为了避免CPU占用过高,可以在循环结束时短暂休眠
Thread.Sleep(10);
}
});
thread.Start(); // 启动线程
// 模拟某个条件改变,布尔变量被设置为false,立即执行方法
// 例如:在某个事件处理函数中将shouldSleep设置为false
// shouldSleep = false;
// 模拟一段时间后恢复休眠
// 例如:在另一个事件处理函数中将shouldSleep重新设置为true
// shouldSleep = true;
}
static void MethodToRun()
{
// 这里是你的方法逻辑
Console.WriteLine("Method is running.");
}
}
```
在这个例子中,`MethodToRun`代表你要在循环中执行的方法。线程会根据`shouldSleep`变量的值决定是否在每次执行完`MethodToRun`方法后休眠200毫秒。
请确保合理地控制这个布尔变量`shouldSleep`的改变,以避免造成死循环或者资源的过度消耗。通常,这种控制是在某个外部事件或者条件发生时进行的,这在示例代码中并未展现。
阅读全文