0

いくつかの計算を行い、計算結果をリストボックスに追加する小さなプロジェクトを行いたいと思います。

私のコード:

     int SumLoop(int lowLimit, int highLimit)
        {
            int idx;
            int totalSum = 0;
            for (idx = lowLimit; idx <= highLimit; idx = idx + 1)
            {
                totalSum += idx;
            }
            return totalSum;
        }

   private void button1_Click(object sender, EventArgs e)
        {
            var test2 = Observable.Interval(TimeSpan.FromMilliseconds(1000)).Select(x=>(int)x).Take(10);

            test2.Subscribe(n => 
                {
                    this.BeginInvoke(new Action(() =>
                        {
                            listBox1.Items.Add("input:" + n);
                            listBox1.Items.Add("result:" + SumLoop(n,99900000));
                        }));
                });
        }

結果:

input:0
result:376307504
(stop a while)
input:1
result:376307504
(stop a while)
input:2
result:376307503
(stop a while)
input:3
result:376307501
(stop a while)
....
...
..
.
input:"9
result:376307468

間隔定数を 1000 --> 10 から変更したい場合は、

var test2 = Observable.Interval(TimeSpan.FromMilliseconds(10)).Select(x=>(int)x).Take(10);
  1. 表示動作が異なります。リストボックスには、すべての入力と結果が表示されます。すべての結果が完了するのを待ってから、すべてをリストボックスに表示するようです。なんで?

  2. この定数 (interval:10) を使用し続け、すべてを表示したくない場合は、ショットだけを表示します。"Input :0" を表示したい --> 計算待ち --> "result:376307504" を表示...

助けてくれてありがとう。

4

2 に答える 2