C#怎么写0变为1及1变为0的事件?求高手解答

FLAG字段变化规律:0,0,0,0,1,1,1,1,1,1,0,0,0,0
从数据库查询到FLAG字段,如果从0变为1,则保存此时刻的相关数据,如果从1变为0,则保存此时刻数据。怎么写呢?迷糊了,求高手解答!(注:是一串'0'或‘1’的连续值,在变化过程激发保存,程序是用C#开发的)

第1个回答  2012-12-05
说白了就是FLAG产生了变化就保存一次数据吧。用定时器,定时时间要求小于数据采样速度,在定时器中判断FLAG与上一次的FLAG不一致即执行保存数据。
if (FLAG!=OLD_FLAG)
{
//保存数据代码
OLD_FLAG = FLAG;
}追问

谢谢你的回答,这是一个很好的思路,我也想到了,存在的问题是:FLAG瞬时从0变到1,保存第一次数据;FLAG瞬时从1变为0,保存第二次数据,第一次保存与第二次保存要严格区分,因为第一次保存的是起始数据,第二次保存的是结束数据。所以,按您上面的做法,还是解决不了这个问题。

追答

上面代码写错了,应该如下:
if (FLAG!=OLD_FLAG)
{
//保存相关数据代码
}
OLD_FLAG = FLAG;

第2个回答  2012-12-05
int[] t=new int[]{0,0,0,0,1,1,1,1,1,1,0,0,0,0};
if(t.Length<2)
return;
int first=t[0];
for (int i =1; i < t.Length; i++)
{
if (first != t[i])
{
Console.WriteLine(string.Format("在第{0}位保持", i));
first = t[i];
}
}追问

你这个理解错了,FLAG是一位,要么为0,要么为1,在实时变化

第3个回答  2012-12-05
string str="1110001010111";
string save="";//保存变化后的到save中

for (int i = 0; i < str.Length - 1; i++)
{
char a=str[i];
char b=str[i+1];
if (b != a) save += b;
}追问

你理解错了,FLAG只有一位,要么为0,要么为1,实时变化的

第4个回答  2012-12-05
这个flag发生变化的时候应该会有一个事件被触发吧?一般来说,数据的变化总是伴随着事件的触发的,希望说清楚你的应用环境
第5个回答  2012-12-05
哎,实时变化你就接进来和上一个接的值比一下不就知道该不该保存了,要是不知道怎么接你就说说你的情况。。。追问

说白了就是要写个事件,FLAG从0变为1保存,这个FLAG的值是没有实时保存的,UPdate的,所以得写个事件!

追答

需不需要事件要看你的具体情况,要只是简单的这个情况,用事件什么的没有意义,你又不是接一下就关,用个变量存值有什么不成的,就是关了你也可以保存个配置文件什么的,实在你非要用事件的话,自己搜观察者模式,看了你就明白事件是什么情况了

相似回答