我想做一个小项目来做一些计算并将计算结果添加到列表框中。
我的代码:
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);
显示行为变得不同。列表框将显示所有输入和结果。似乎它等待所有结果完成,然后将所有内容显示到列表框。为什么?
如果我想继续使用这个常量(间隔:10)并且不想只显示所有内容。我想显示“输入:0”-->等待计算-->显示“结果:376307504”....那么,我该怎么做呢?
感谢您的帮助。