我试过Observable.Create
等待完成,然后再显示任何结果。可能是因为我尝试遵循的示例是不断变化的实时值,而不是不断变化的实时集合。
和
ObservableCollection<FileAnalysisResult> fileAnalysisResults = new ObservableCollection<FileAnalysisResult>();
我似乎无法申请,因为.DumpLive()
不适用于ObservableCollection
。
简短回答:使用 LINQPad 的DumpContainer
:
var dc = new DumpContainer().Dump();
for (int i = 0; i < 100; i++)
{
dc.Content = i;
Thread.Sleep(100);
}
长答案:DumpContainer
写入 LINQPad 的标准 HTML 结果窗口,因此您可以在主线程被阻止时看到值就地更改,而在 IObservable 上调用 DumpLive
使用 WPF 控件来呈现更新,因此主线程必须保持畅通无阻,才能在更新发生时看到更新。
还可以转储 WPF 或 Windows 窗体控件并就地更新它:
var txt = new TextBox().Dump();
for (int i = 0; i < 100; i++)
{
txt.Text = i.ToString();
await Task.Delay(100);
}
就像 DumpLive
一样,您必须小心不要阻塞主线程。如果将await Task.Delay
替换为 Thread.Sleep
,则会阻止 UI 线程,直到最后才会显示任何内容。