後,我有一些代碼,看起來像這樣:屬性值發送到服務器的穩定
class MyVM : VMBase {
public MyVM(IMyServerProxy proxy) {
_proxy = proxy;
_proxy.ValueChanged += OnValueChangedFromServer;
}
private void OnValueChangedFromServer(int value){
_value = value;
RaisePropertyChanged(() => Value);
}
public int Value { // bound to slider
get { return _value; }
set {
_value = value;
// need something here to only send stable values to server
_proxy.ModifyValue(value); // async
}
}
}
問題是這樣的:值綁定到一個滑塊控件。該滑塊會觸發很多更改。我不想將所有這些發送到服務器。我只想發送穩定的價值。從本質上講,我想插入一些東西到價值設置器,只有在值沒有改變一整秒後才調用代理。 (我有一個次要的擔憂,即服務器會將過時的值更改回給我,但如果我只是延遲發送到服務器,我認爲這會大部分減少。)
我看着使用Task.Delay
方法。但是,如果我取消延遲,則會引發異常,並且在每次更新時構建新的CancellationSource
似乎也不是理想的選擇。有更好的方法嗎?
@EugenePodskal,根據您的建議,第一次更改將始終發送。這也意味着一些財產正在定期設定,事實並非如此。我不認爲這會奏效。 – Brannon