質問編集履歴
3
Scan+Concatで無限には続かった
test
CHANGED
File without changes
|
test
CHANGED
@@ -106,11 +106,13 @@
|
|
106
106
|
|
107
107
|
変換メソッドを`Scan+Concat`で呼んだ場合、変換メソッド`ConvertAsync`の順番は保たれますが、
|
108
108
|
|
109
|
-
変換部分
|
109
|
+
変換部分がすぐ停止しません。出力部分だけがすぐ停止されます。
|
110
|
-
|
111
|
-
|
112
|
-
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
-
以下では停止処理`disposerA.Dispose()`
|
113
|
+
以下では5個目完了ぐらいのタイミングで停止処理`disposerA.Dispose()`しても、12個目まで変換は続きます。
|
114
|
+
|
115
|
+
大体止めた個数の倍ぐらいまで変換が続くようです。20個目で停止→40個目ぐらいまで変換される。
|
114
116
|
|
115
117
|
|
116
118
|
|
@@ -118,53 +120,55 @@
|
|
118
120
|
|
119
121
|
```
|
120
122
|
|
121
|
-
00.0
|
123
|
+
00.065|Thread:1|Start Subscription
|
122
|
-
|
124
|
+
|
123
|
-
00.6
|
125
|
+
00.613|Thread:4|Start ConvertAsync 0
|
124
|
-
|
126
|
+
|
125
|
-
00.7
|
127
|
+
00.745|Thread:4|End ConvertAsync 0
|
126
|
-
|
128
|
+
|
127
|
-
00.7
|
129
|
+
00.751|Thread:5|Subscrive inputValue:[Converted:0 delayMilliSec:100]
|
128
|
-
|
130
|
+
|
129
|
-
01.1
|
131
|
+
01.121|Thread:5|Start ConvertAsync 1
|
130
|
-
|
132
|
+
|
131
|
-
01.2
|
133
|
+
01.233|Thread:5|End ConvertAsync 1
|
132
|
-
|
134
|
+
|
133
|
-
01.2
|
135
|
+
01.233|Thread:5|Subscrive inputValue:[Converted:1 delayMilliSec:100]
|
134
|
-
|
136
|
+
|
135
|
-
01.6
|
137
|
+
01.614|Thread:6|Start ConvertAsync 2
|
136
|
-
|
138
|
+
|
137
|
-
01.75
|
139
|
+
01.725|Thread:4|End ConvertAsync 2
|
138
|
-
|
140
|
+
|
139
|
-
01.75
|
141
|
+
01.725|Thread:4|Subscrive inputValue:[Converted:2 delayMilliSec:100]
|
140
|
-
|
142
|
+
|
141
|
-
02.1
|
143
|
+
02.112|Thread:4|Start ConvertAsync 3
|
142
|
-
|
144
|
+
|
143
|
-
03.
|
145
|
+
03.978|Thread:6|End ConvertAsync 3
|
144
|
-
|
146
|
+
|
145
|
-
03.
|
147
|
+
03.979|Thread:6|Start ConvertAsync 4
|
146
|
-
|
148
|
+
|
147
|
-
03.
|
149
|
+
03.979|Thread:5|Subscrive inputValue:[Converted:3 delayMilliSec:1858]
|
148
|
-
|
150
|
+
|
149
|
-
0
|
151
|
+
05.823|Thread:7|End ConvertAsync 4
|
150
|
-
|
152
|
+
|
151
|
-
0
|
153
|
+
05.823|Thread:7|Start ConvertAsync 5
|
152
|
-
|
154
|
+
|
153
|
-
0
|
155
|
+
05.823|Thread:6|Subscrive inputValue:[Converted:4 delayMilliSec:1836]
|
154
|
-
|
155
|
-
|
156
|
-
|
156
|
+
|
157
|
+
|
158
|
+
|
157
|
-
06.
|
159
|
+
06.920|Thread:1|Dispose Subscription
|
158
|
-
|
160
|
+
|
159
|
-
0
|
161
|
+
07.223|Thread:4|End ConvertAsync 5
|
160
|
-
|
162
|
+
|
161
|
-
0
|
163
|
+
07.223|Thread:4|Start ConvertAsync 6
|
162
|
-
|
164
|
+
|
163
|
-
0
|
165
|
+
08.545|Thread:6|End ConvertAsync 6
|
166
|
+
|
164
|
-
|
167
|
+
(略)
|
168
|
+
|
165
|
-
|
169
|
+
15.244|Thread:4|Start ConvertAsync 12
|
166
|
-
|
170
|
+
|
167
|
-
.
|
171
|
+
16.961|Thread:6|End ConvertAsync 12
|
168
172
|
|
169
173
|
```
|
170
174
|
|
2
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
変換メソッドを`SelectMany`で
|
27
|
+
変換メソッドを`SelectMany`で呼んだ場合、変換メソッド`ConvertAsync`の順番が前後してしまいます。
|
28
28
|
|
29
29
|
ただし、変換→出力部分の停止はできています。
|
30
30
|
|
@@ -104,7 +104,7 @@
|
|
104
104
|
|
105
105
|
|
106
106
|
|
107
|
-
変換メソッドを`Scan+Concat`で
|
107
|
+
変換メソッドを`Scan+Concat`で呼んだ場合、変換メソッド`ConvertAsync`の順番は保たれますが、
|
108
108
|
|
109
109
|
変換部分の停止はできません。出力部分だけ停止されます。
|
110
110
|
|
1
補足
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Reactive Extensionsでasyncメソッドを順番に実行したい
|
1
|
+
[C#]Reactive Extensionsでasyncメソッドを順番に実行したい
|
test
CHANGED
@@ -14,6 +14,8 @@
|
|
14
14
|
|
15
15
|
変換メソッド`ConvertAsync`は内部で`await Task.Delay`をしていますが、実際に使用する場合はここがファイルやネットワークアクセスになります。
|
16
16
|
|
17
|
+
この`ConvertAsync`の開始・終了が前後しないように順番に行いたいです。
|
18
|
+
|
17
19
|
|
18
20
|
|
19
21
|
### 発生している問題・エラーメッセージ
|
@@ -108,7 +110,7 @@
|
|
108
110
|
|
109
111
|
|
110
112
|
|
111
|
-
停止処理`disposerA.Dispose()`後も無限に変換は続きます。
|
113
|
+
以下では停止処理`disposerA.Dispose()`後も無限に変換は続きます。
|
112
114
|
|
113
115
|
|
114
116
|
|
@@ -304,8 +306,10 @@
|
|
304
306
|
|
305
307
|
### 補足情報(FW/ツールのバージョンなど)
|
306
308
|
|
307
|
-
|
309
|
+
C# 8.0
|
308
310
|
|
309
311
|
.NET 5.0
|
310
312
|
|
311
313
|
"System.Reactive" Version="5.0.0"
|
314
|
+
|
315
|
+
VisualStudio 2019
|