C# 100毫秒计时器,我希望每个计时器滴答声返回0或1

C# 100毫秒计时器,我希望每个计时器滴答声返回0或1,c#,C#,我想做一个函数 每个定时器都会闪烁绿色 每隔一秒定时器就会关闭绿色 我的win表单中有一个计时器,间隔为100毫秒 所以 每200毫秒,我的颜色将闪烁为绿色 你能帮我吗 这不管用 var green = (((float)System.Environment.TickCount / 100) % 2) != 0; if (green==true) { greenColor); if (green==false) { noColo

我想做一个函数

每个定时器都会闪烁绿色 每隔一秒定时器就会关闭绿色

我的win表单中有一个计时器,间隔为100毫秒

所以 每200毫秒,我的颜色将闪烁为绿色

你能帮我吗

这不管用

var green = (((float)System.Environment.TickCount / 100) % 2) != 0;
if (green==true)
 {
greenColor);
if (green==false)
{                                 
noColor);
}
因为每次我建议使用
bool
时,有两种状态(颜色或无颜色)进行交换,并在计时器刻度结束时反转其值,如下所示:

bool tick;
private void theTimer_Tick( object sender, EventArgs e )
{
    if(tick)
    {
        colorLabel.BackColor = Color.Red;//Using label as example
    }
    else
    {
        colorLabel.BackColor = Color.Green;
    }
    tick = !tick;//Invert tick bool
}

这样你就不需要计算计数器的时间,也不需要计算各种各样的东西。

你就快到了。只是不要使用
(float)
。使用整数运算

bool green = (System.Environment.TickCount / 100) % 2 == 0;
如果使用浮点余数(我不推荐),那么测试不应该是
==0
,而应该是
<1
。否则,当除法余数精确为零时,它将仅为绿色1毫秒

bool green = (((float)System.Environment.TickCount / 100) % 2) < 1;
bool green=((float)System.Environment.TickCount/100)%2<1;

这段代码甚至都不会编译。这是你的真实代码吗?它的psedeu代码,@drogbaa你能解释一下吗:
每一个定时器滴答一声,它就会闪烁绿色,每一秒定时器滴答一声,它就会关闭绿色。我的win表单中有一个计时器,间隔为100毫秒。因此,每隔200毫秒,我的颜色将闪烁为绿色。
老实说,我不太理解这里的计划-编辑-我的坏误解了你所说的勾选计划是什么意思,例如,绿色将闪烁,100毫秒后红色将闪烁,100毫秒后绿色将一次又一次闪烁。。。我正在用serialport做一个颜色警告..停止尝试用模来做,而是使用布尔变量和布尔逻辑。将变量放在表单级别,使其保持其值。在计时器事件处理程序中,使用
if(isGreen){noColor;isGreen=false;}else{isGreen=true;greencolor;}取而代之。如何获取计时器的间隔?我的意思是什么是勾号?不需要使用变量,只需对颜色执行内联if:
colorLabel.BackColor=colorLabel.BackColor==color.Red?颜色。绿色:颜色。红色@drogbaa如果你不需要勾号来改变颜色,可以使用bool。真=红色,假不是。然后在最后将其值设置为相反的值。每一个滴答声都是一个或一个尖儿,谢谢。如果我想增加彩色闪光时间,我应该怎么做?。我不想改变我的间隔时间,它将保持为100毫秒。但是如果我想每500毫秒改变一次颜色,正确的方法是什么?@Drogbaa我能想到的最简单的方法就是做一个计数器,每次做
tickCounter++
if(tickCounter%5==0)
:)好的,这在开始时是有效的,但3-5秒后,它不是算术运算,有时5秒后它不会闪烁我的绿色。。它并不总是像0-1-0-1那样,有时会变成0-0-1-0-1--1-0等等。这是行不通的。计时器不能保证每100ms执行一次此代码。它将大约每100毫秒执行一次。这段代码基本上每100毫秒有50/50的工作时间。显然,如果你不关心同步,那么只要在计时器启动时打开按钮,我同意。但由于这个答案会影响到滴答数搜索,我想我应该解释一种解释代码问题的技术。TickCount的使用有一个很好的特性,即它与系统时间保持同步。因此,只需将计时器间隔提高到显示器的奈奎斯特频率即可。(可能为8毫秒或更短)。值得一提的是,这是我们在高刷新率视频游戏中使用的技术。