4

私はlistBoxを持っていて、アイテムがいつ選択されるかを観察しています:

selectedItems.Subscribe(DoWorkWIthSelectedItems);

オブザーバブルはビューモデル項目の配列を返し、DoWorkWIthSelectedItems選択した項目のリストを調べていくつかの作業を行います。ただし、ユーザーは選択のオン/オフを非常に迅速にスパミングしている可能性があるため、アイテムの作業が完了するたびに、そのアイテムに対して 30 秒間再度作業が行われることは望ましくありません。30 秒後にアイテムが再び選択された場合は、先に進んで作業してください。

これを行うRxの方法はありますか?サンプルかスロットルかはわかりません。さらに、Rx を使用して、配列内の作業に適した項目と無視すべき項目を区別できるかどうかもわかりません。「動作中」の状態を示すために、viewModel アイテムに追加のプロパティが必要ですか?

ありがとう。

4

1 に答える 1

1

なんらかの状態が必要です。あなたの最も簡単な解決策は(疑似コード)のようなものだと思います

var recentlyUsed = new ConcurrentDictionary<T, DateTime>();
...
selectedItems
    .Do(/* remove expired items from recentlyUsed */)
    .Where(/* items are not in recently used */)
    .Do(/* add items to recently used */)
    .Subscribe(DoWorkWIthSelectedItems);  
于 2013-10-05T18:45:38.763 に答える