C#-仅当数字更改时循环

C#-仅当数字更改时循环,c#,C#,我的代码示例: string value = client.DownloadString("http://www.site.com/value.html"); // There is a value of something like a1x6b2xs2 (just one line with random numbers that changes randomly). Console.WriteLine(value); Console.ReadKey(); 这就是全部代码!我需要让控制台写的

我的代码示例:

string value = client.DownloadString("http://www.site.com/value.html"); // There is a value of something like a1x6b2xs2 (just one line with random numbers that changes randomly).
Console.WriteLine(value);
Console.ReadKey();

这就是全部代码!我需要让控制台写的数字再次只有当在网站上的值被改变!并使其成为一个不间断循环,只需反复写入数字,但前提是旧值已更改。

为什么不将前一个数字保留在变量中,并在打印前进行检查

int previousNumber = int.MinValue; // some invalid value 
while (isRunning) {
    // wait three minutes
    int currentNumber = GetNumberFromSite();
    if (currentNumber != previousNumber) {
        Console.WriteLine(currentNumber);
        previousNumber = currentNumber;
    }
}
private System.Threading.Timer checkNumberTimer;
private int currentNumber;

private void InitTimer()
{
    //start immediately, interval is in TimeSpan
    checkNumberTimer = new System.Threading.Timer(
        timer_Elapsed,
        null,
        TimeSpan.Zero,
        Properties.Settings.Default.Interval
    );
}

private void timer_Elapsed(Object state)
{
    int oldNumber = currentNumber;
    currentNumber  =  CheckNumber();
    if( oldNumber != currentNumber  )
        ShowNewNumber( currentNumber );
}

您只需要存储旧值,并在输出新值之前检查它

int oldVal = -1;

while (true)
{
  int newVal = GetNewValue();
  if (newVal != oldVal)
  {
     Console.WriteLine(newVal);
     oldVal = newVal ;
  }
  Thread.Sleep(1000 * 60 * 3)
}
大概是这样的:

int current = ...;
int prev = current;
while(true)
{
    // get new number in current
    if(current != prev) 
        Console.WriteLine(current);
    prev = current;
    // wait 3 min
}
您可以使用定期检查该数字是否已更改的

private System.Threading.Timer checkNumberTimer;
private int currentNumber;

private void InitTimer()
{
    //start immediately, interval is in TimeSpan
    checkNumberTimer = new System.Threading.Timer(
        timer_Elapsed,
        null,
        TimeSpan.Zero,
        Properties.Settings.Default.Interval
    );
}

private void timer_Elapsed(Object state)
{
    int oldNumber = currentNumber;
    currentNumber  =  CheckNumber();
    if( oldNumber != currentNumber  )
        ShowNewNumber( currentNumber );
}

将值写入变量,然后检查它是否已更改

int old, new
new = getValue(file.html)
if new != old then
  write(new) 
old = new

你可以自己翻译成工作代码。

当然,不会那么简单。哦,
int?
。我没想到那个。好主意。这个问题我不太清楚。你的意思是:
intnewvalue=getValueFromHtml();如果(newValue!=oldValue)显示();旧值=新值?或者您是否希望停止定期检查差异,并以某种方式被告知文件发生了更改(这可能是可行的,也可能是不可行的)?我刚刚编辑了问题,以便现在有人能够理解:PDid您尝试提供的任何答案吗?我想大多数人都明白你在寻找什么,因为每个人都给出了相似的答案。甚至是我的孩子。