0

私はこのコードを持っています:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            while (true)
            {

                if ((worker.CancellationPending == true))
                {
                    e.Cancel = true;
                    break;
                }
                else
                {



                    string content = downloadContent();
                    if (InvokeRequired)
                    {
                        BeginInvoke(new Action(() => textBox1.Text = content), null);
                    }

                    GetProfileNames(content);
                    GetTextFromProfile(content);


                    reader.Close();
                    response.Close();
                    Thread.Sleep(30000);
                }
            }
        }

そして downloadContent 関数:

private string downloadContent()
        {
            WebRequest request = WebRequest.Create(testingUrl);
            request.Method = "GET";
            response = request.GetResponse();
            Stream stream = response.GetResponseStream();
            reader = new StreamReader(stream);
            string content = reader.ReadToEnd();
            return content;
        }

30 秒ごとに、現在のように新しいコンテンツをダウンロードし、古いコンテンツを 1 つ前に保存し、新しいダウンロードをダウンロードしたコンテンツの前のものと比較する必要があります。

同一の場合は何もしないでください。同一でない場合は何かをしてください。

4

2 に答える 2

1

.NET のタイマー クラスの 1 つを使用します。

System.Timers.Timer独自のスレッドで実行されることを理解する必要がありますが、winforms を使用していない場合は良い選択です。

var timer = new Timer(30000); // Interval of 30 seconds
timer.Elapsed = OnTimedEvent;
timer.Start();

private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
    // Update logic here.
}
于 2012-08-11T19:02:19.143 に答える
0

最後のコンテンツを格納するための変数を保持します。この変数は、BGWorkerDoWorkメソッドの外部に配置する必要があります。

string LastContent = "";

次に、この行の下で:

string content = downloadContent();

これらを追加して、同じかどうかを確認します。

if (content == LastContent)
{
   e.Cancel=true;
   LastContent=content;
   break;
}
else
{
   //Do something if they are not equal.
} 
于 2012-08-11T19:06:24.880 に答える