问个简单问题,送送分

Tony_Xian 2017-11-24 01:55:09
每次循环a增加0.2,输出a的值,并输出hello,world,当a >= 10时,a的值一直保持为10,不增加,持续3秒,这段时间也输出hello,world,3秒过去a从10继续递增,下面代码应该怎样修改
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Threading;

namespace DataTest123
{
class Program
{
static void Main(string[] args)
{
bool delay = false;
double a = 0;
var sw = new Stopwatch();
while (true)
{
if(!delay)
a += 0.2;
Console.WriteLine(a);
if (a > 10)
{
sw.Start();
}
if (sw.ElapsedMilliseconds >= 3000)
{
delay = false;
sw.Stop();
sw.Reset();
}
Console.WriteLine("hello world");
}
}
}
}
...全文
229 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
exception92 2017-11-24
  • 打赏
  • 举报
回复
简单的写了一下,为了测试 把while改为for 循环,a的条件改为>=1





SpinLock sl = new SpinLock();
ManualResetEventSlim mre1 = new ManualResetEventSlim(false);
ManualResetEventSlim mre2 = new ManualResetEventSlim(false);
double a = 0;
for (int i = 0; i < 20; i++)
{
Task.Run(() =>
{
bool gotLock = false;
try
{
gotLock = false;
sl.Enter(ref gotLock);
a += 0.2;
if (a >= 1 && !mre2.IsSet)
{
WriteLine($"a={a}");
mre2.Set();
mre1.Wait(3000);
mre1.Set();
mre2.Wait();
}
else
{
WriteLine($"a={a}");
WriteLine("->hello,world");
}
}
finally
{
if (gotLock)
sl.Exit();
}
Task.Delay(1000).Wait();
});
Task.Run(() =>
{
if (!mre1.IsSet)
{
mre2.Wait();
WriteLine("->继续 hello,world");
Task.Delay(1000).Wait();
}
});
}
大然然 2017-11-24
  • 打赏
  • 举报
回复
我用的笨方法

  • 打赏
  • 举报
回复
引用 2 楼 boiled_water123 的回复:
我是楼主啊,输出频率50ms一次吧,每次就输出a的值和hello world,要求不能用thread.sleep,因为我不想停止后阻止后面代码的执行,谢谢
感情这是考试啊,这点分太少不做
ManBOyyy 2017-11-24
  • 打赏
  • 举报
回复
用定时器实现你的要求,看看Timer
Tony_Xian 2017-11-24
  • 打赏
  • 举报
回复
我是楼主啊,输出频率50ms一次吧,每次就输出a的值和hello world,要求不能用thread.sleep,因为我不想停止后阻止后面代码的执行,谢谢
  • 打赏
  • 举报
回复
需求就够乱的你这代码更乱……
引用
a的值一直保持为10,不增加,持续3秒,这段时间也输出hello,world
输出频率呢?持续三秒不变化输出的频率是多少?输出多少次间隔多久输出? 间隔不变输出这个需求,变成10 之后 输出一次 sleep 3秒 然后继续即可

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧