В моей ViewModel я хотел бы сделать пару вещей и хотел бы обновить статус, когда все сделано.
Книга Кента Бугаарта предложила использовать Observable, чтобы показать прогресс. Теперь я застрял в том, как выполнять несколько частей работы, скажем, в Task
с, и отметьте наблюдаемое. Я попытался оператор Concat
, но все Task
запускаются сразу, а не один за другим.
public class StartupViewModel : ReactiveObject
{
public string Status { [ObservableAsProperty]get; }
public ReactiveCommand<Unit,string> LoadedCommand { get; set; }
public StartupViewModel()
{
var progress = Observable.Concat(
Task.Run(() =>
{
Thread.Sleep(3000);
return "hello";
}).ToObservable(),
Task.Run(() =>
{
Thread.Sleep(3000);
return "cip";
}).ToObservable(),
Task.Run(() =>
{
Thread.Sleep(3000);
return "2040";
}).ToObservable()
);
LoadedCommand = ReactiveCommand.CreateFromObservable(() => progress);
LoadedCommand
.ToPropertyEx(this, x => x.Status, "Starting up, please be patient");
}
}