1
我有以下代碼,我嘗試重播序列;但PostWorkItem始終爲空;我不明白爲什麼。 下面的代碼給出堆棧溢出錯誤。Rx中的HistoricalScheduler
Task<List<WorkItem>> WorkItems = DbUtil.GetWorkItems(new List<string>() { WorkItemStatus.NEW, WorkItemStatus.PROCESSING });
Items = WorkItems.Result;
replay = Observable.Generate(
Items.GetEnumerator(),
events => events.MoveNext(),
events => events,
events => events.Current,
events => System.TimeSpan.FromMilliseconds(50),
var);
replay.Subscribe(
W =>
PostWorkItem(W)
);
//var.AdvanceBy(System.TimeSpan.FromSeconds(1));
var.Start();
James Thanks;代碼在您的建議後工作;但是當我使用Scheduler.AdvanceTo(Date.Now)時,這將創建StackOverFlow錯誤。 – user2757350
嗯,我可以告訴你'Observable.Generate'不是遞歸的,所以我非常確定它將取決於你正在使用的枚舉器。我建議你設置一些中斷點並檢查堆棧,看看它有什麼以及它的增長情況。 –
感謝您的建議。通過註釋掉這段代碼,它不會導致堆棧溢出。 // events => events.Current.RequestedDateTime,但我想AdvanceTo直到2月12日,我不能這樣做...我想確保AdvanceTo與所有itemsso的RequesteDateTime相關,只能在2月12日之前重播,下一次迭代我將推進至2月14日... – user2757350