AvaloniaUI+ReactiveUI中执行异步命令时,界面冻结。
创始人
2024-11-12 19:00:39
0

使用Command来执行异步操作,并在Command中实现ICancellableCommand接口来处理取消操作,避免界面冻结。

代码示例:

public class AsyncCommand : ICommand, ICancellableCommand
{
    private readonly Func _execute;
    private bool _isExecuting;

    public AsyncCommand(Func execute)
    {
        _execute = execute;
    }

    public bool CanExecute(object parameter)
    {
        return !_isExecuting;
    }

    public async void Execute(object parameter)
    {
        _isExecuting = true;
        try
        {
            await _execute();
        }
        finally
        {
            _isExecuting = false;
        }
    }

    public void Cancel()
    {
        // TODO: Implement cancellation
    }

    public event EventHandler CanExecuteChanged;
}

使用方法:

private AsyncCommand _asyncCommand;

public ViewModel()
{
    _asyncCommand = new AsyncCommand(ExecuteAsync);
}

public ICommand AsyncCommand => _asyncCommand;

private async Task ExecuteAsync()
{
    // TODO: Implement asynchronous operation
}

相关内容

热门资讯

查到实测!wepoker辅助挂... 查到实测!wepoker辅助挂多功能透视工具,一贯有挂(有挂规律)所有人都在同一条线上,像星星一样排...
科普常识!wpk辅助挂多功能透... 科普常识!wpk辅助挂多功能透视工具,好像有挂(有挂解密)1、进入到wpk是否有挂之后,能看到左侧胜...
重大消息!wepoker辅助挂... 重大消息!wepoker辅助挂多功能透视工具,都是真的是有挂(竟然有挂)1、wepoker免费辅助多...
一分钟了解!德扑之星辅助挂多功... 一分钟了解!德扑之星辅助挂多功能透视工具,切实有挂(有挂分享)1、德扑之星透视辅助软件激活码多个强度...
必备科技!wepoker辅助挂... 必备科技!wepoker辅助挂多功能透视工具,总是是有挂(有挂解惑);1、金币登录送、破产送、升级送...
一分钟了解!aapoker辅助... 一分钟了解!aapoker辅助挂多功能透视工具,好像真的是有挂(有挂透视)1、下载好aapoker脚...
每日必看推荐!aapoker辅... 每日必看推荐!aapoker辅助挂多功能透视工具,原来真的有挂(确实有挂)1、打开软件启动之后找到中...
推荐一款!智星德州扑克辅助挂多... 推荐一款!智星德州扑克辅助挂多功能透视工具,原来真的有挂(有挂秘诀)1、全新机制【智星德州扑克ai辅...
玩家必看教程!红龙poker辅... 玩家必看教程!红龙poker辅助挂多功能透视工具,一贯有挂(存在有挂)暗藏猫腻,小编详细说明红龙po...
教程攻略!智星德州扑克辅助挂多... 教程攻略!智星德州扑克辅助挂多功能透视工具,果然有挂(有挂头条);1、完成智星德州扑克有辅助插件,帮...