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
}

相关内容

热门资讯

关于透视"wepok... 关于透视"wepoker开挂软件是不是真的"开挂(透视)辅助脚本(技术分享线上教程)关于透视"wep...
第1分钟辅助!神途免费辅助软件... 第1分钟辅助!神途免费辅助软件,游戏茶苑辅助(一分钟秒懂开挂辅助软件) >>您好:软件加薇13670...
科技透视"wpk有挂... 科技透视"wpk有挂吗"开挂(透视)辅助神器(一分钟揭秘微扑克教程)科技透视"wpk有挂吗"开挂(透...
第五分钟开挂!万能脚本辅助器,... 第五分钟开挂!万能脚本辅助器,新导游正版辅助(透视肯定开挂辅助安装);无需打开直接搜索打开薇:136...
分享透视"微扑克作假... 分享透视"微扑克作假吗"开挂(透视)辅助挂(研究成果揭秘教程)分享透视"微扑克作假吗"开挂(透视)辅...
9分钟透视!多乐辅助工具,wp... 9分钟透视!多乐辅助工具,wpk软件是正规的吗(透视工具开挂辅助神器);亲,多乐辅助工具这款游戏原来...
原来有透视"wepo... 原来有透视"wepoker辅助挂有没有"开挂(透视)辅助脚本(必知教程AA德州教程)原来有透视"we...
第三分钟辅助!手游辅助脚本平台... 第三分钟辅助!手游辅助脚本平台,越乡游辅助工具(安装程序教程开挂辅助脚本)>>您好:软件加13670...
关于透视"微扑克辅助... 关于透视"微扑克辅助器app"开挂(透视)辅助平台(如何分辨真伪攻略教程)关于透视"微扑克辅助器ap...
三分钟辅助!微乐广西小程序开挂... 微乐广西小程序开挂是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我...