약간의 계산을 수행하고 계산 된 결과를 목록 상자에 추가하려면 약간의 프로젝트를 수행하고 싶습니다.Rx 구독 문제, winform에서 UI 컨트롤의 데이터를 업데이트하는 방법
내 코드 :
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)를 계속 사용하고 싶을뿐 모든 장면을 표시하고 싶지 않습니다. "Input : 0"-> 계산 대기 -> "result : 376307504"...을 표시하고 싶습니다. ... 그럼 어떻게하면됩니까?
감사합니다. 대신 control.Invoke/control.BeginInvoke을하는