回答編集履歴
3
FullPath毎
test
CHANGED
@@ -88,7 +88,7 @@
|
|
88
88
|
// 購読(つまりグループ毎に別々に購読してる)
|
89
89
|
.Subscribe(e =>
|
90
90
|
{
|
91
|
-
// ここが目的の
|
91
|
+
// ここが目的のFullPath毎のThrottle結果
|
92
92
|
Task.Run(() =>
|
93
93
|
{
|
94
94
|
string rtnCode = createBat(e.FullPath);
|
2
毎
test
CHANGED
@@ -83,7 +83,7 @@
|
|
83
83
|
// ここは新たなグループ(FullPath)があったときに来る(Changedイベント毎に来るのではない)
|
84
84
|
Debug.WriteLine(g.Key);
|
85
85
|
|
86
|
-
// グループ
|
86
|
+
// グループ毎にThrottle(1秒以上同じFullPathのイベントがこなければ最後のイベントを後続に流す)
|
87
87
|
g.Throttle(TimeSpan.FromSeconds(1))
|
88
88
|
// 購読(つまりグループ毎に別々に購読してる)
|
89
89
|
.Subscribe(e =>
|
1
追記
test
CHANGED
@@ -72,3 +72,27 @@
|
|
72
72
|
|
73
73
|
`GroupByUntil`の例もありましたが、厳密には意味が違うような気がします(実用上は大差ないかもしれないが)
|
74
74
|
[c# - Rx grouped throttling - Stack Overflow](https://stackoverflow.com/questions/42694010)
|
75
|
+
|
76
|
+
## 追記
|
77
|
+
yajiyajiさんのコードに合わせるとすると、こうですかね?(動作確認はしてません^^;
|
78
|
+
```cs
|
79
|
+
watcher.ChangedAsObservable()
|
80
|
+
.GroupBy(i => i.FullPath) // FullPathでグループ化
|
81
|
+
.Subscribe(g =>
|
82
|
+
{
|
83
|
+
// ここは新たなグループ(FullPath)があったときに来る(Changedイベント毎に来るのではない)
|
84
|
+
Debug.WriteLine(g.Key);
|
85
|
+
|
86
|
+
// グループごとにThrottle(1秒以上同じFullPathのイベントがこなければ最後のイベントを後続に流す)
|
87
|
+
g.Throttle(TimeSpan.FromSeconds(1))
|
88
|
+
// 購読(つまりグループ毎に別々に購読してる)
|
89
|
+
.Subscribe(e =>
|
90
|
+
{
|
91
|
+
// ここが目的のグループ毎のThrottle結果
|
92
|
+
Task.Run(() =>
|
93
|
+
{
|
94
|
+
string rtnCode = createBat(e.FullPath);
|
95
|
+
});
|
96
|
+
});
|
97
|
+
});
|
98
|
+
```
|