我有這個ReactiveCommand;ReactiveCommand.CreateAsync任務。我如何使用按鈕取消任務?
LoadFileCommand = ReactiveCommand.CreateAsyncTask((_, cancellationToken) => LoadFile(cancellationToken));
我也訂閱命令
subscription = LoadFileCommand.Subscribe(file => OnFileLoaded(file);
現在我要做出從UI使用(在按鈕),另一個命令取消任務。
但如何?
我也沒辦法「注入」我的CancellationToken到LoadFileCommand。我真的迷路了!
編輯:
目前,根據我的MainViewModel.cs(構造函數),我有這樣的:
OpenFileCommand = ReactiveCommand.CreateAsyncTask(async (o, ct) => await LoadFile(ct));
var whenButtonClick =
Observable
.Timer(TimeSpan.FromSeconds(10));
whenButtonClick.Subscribe(_ => Console.WriteLine());
OpenFileCommand
.ExecuteAsync()
.TakeUntil(whenButtonClick)
.Subscribe(OnDocumentLoaded);
我在查看了 「Load」 按鈕綁定到LoadFileCommand,但代碼在創建視圖模型後立即執行任務,而不是在用戶單擊按鈕時執行任務。
順便說一句,我希望能有另一個「取消」按鈕,允許用戶取消裝載。
你能告訴我你在哪裏綁定您的BU tton到'OpenFileCommand'? –
我使用XAML中的綁定綁定到命令,如
我不認爲你會得到與XAML綁定的任何地方。這將依賴於'ICommand'接口來調用'Execute',它返回void。你需要調用ExecuteAsync並掛在它返回的observable上,以便你可以取消它。我會盡量把一些可能適合你的情況扔在一起。 –