首页 > 数据库 >WPF异步命令以及SqlSugar异步增删改查

WPF异步命令以及SqlSugar异步增删改查

时间:2023-09-21 20:24:40浏览次数:47  
标签:异步 AsyncCommand canExecute await 改查 async WPF public

1、异步

 /// <summary>
 /// 查询全部
 /// </summary>
 /// <returns></returns>
 public async Task<List<IgniteTubeInfo>> QueryListAsync()
 {
     return await db.Queryable<IgniteTubeInfo>().ToListAsync();
 }
 /// <summary>
 /// 跟据Id查询
 /// </summary>
 /// <returns></returns>
 public async Task<List<IgniteTubeInfo>> QueryByIdAsync(int id)
 {
     return await db.Queryable<IgniteTubeInfo>().Where(it=>it.Id==id).ToListAsync();
 }

 /// <summary>
 /// 跟据Name查询
 /// </summary>
 /// <returns></returns>
 public async Task<List<IgniteTubeInfo>> QueryByNameAsync(string name)
 {
     return await db.Queryable<IgniteTubeInfo>().Where(it => it.IgniteName==name).ToListAsync();
 }

 /// <summary>
 /// 修改
 /// </summary>
 /// <param name="igniteTubeInfo"></param>
 /// <returns></returns>
 public async Task UpdateAsync(IgniteTubeInfo igniteTubeInfo)
 {
      await db.Updateable(igniteTubeInfo).ExecuteCommandAsync();
 }

 /// <summary>
 /// 跟据Id删除
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
  public async Task DeleteAsync(int id)
  {
     await db.Deleteable<IgniteTubeInfo>().Where(u => u.Id == id).ExecuteCommandAsync();
 }

2、命令

//自定义一个异步命令
 public class AsyncCommand : ICommand
 {
     private bool _isExecuting;
     private readonly Func<Task> _execute;
     private readonly Func<bool> _canExecute;

     public AsyncCommand(Func<Task> execute, Func<bool> canExecute = null)
     {
         _execute = execute;
         _canExecute = canExecute;
     }

     public bool CanExecute(object parameter)
     {
         return !_isExecuting && (_canExecute?.Invoke() ?? true);
     }

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

     public event EventHandler CanExecuteChanged
     {
         add { CommandManager.RequerySuggested += value; }
         remove { CommandManager.RequerySuggested -= value; }
     }
 }
 //使用
  private AsyncCommand _canelCommand;
 public AsyncCommand CancelCommand  =>
     _canelCommand ?? (_canelCommand = new AsyncCommand(ExecuteCanel));

 private void ExecuteCanel()
 {
 }

标签:异步,AsyncCommand,canExecute,await,改查,async,WPF,public
From: https://www.cnblogs.com/guchen33/p/17720845.html

相关文章

  • 解决WPF+Avalonia在openKylin系统下默认字体问题
    一、openKylin简介openKylin(开放麒麟)社区是在开源、自愿、平等和协作的基础上,由基础软硬件企业、非营利性组织、社团组织、高等院校、科研机构和个人开发者共同创立的一个开源社区,致力于通过开源、开放的社区合作,构建桌面操作系统开源社区,推动Linux开源技术及其软硬件生态繁荣发......
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(6) -- 窗口控
    在我们窗口新增、编辑状态下的时候,我们往往会根据是否修改过的痕迹-也就是脏数据状态进行跟踪,如果用户发生了数据修改,我们在用户退出窗口的时候,提供用户是否丢弃修改还是继续编辑,这样在一些重要录入时的时候,可以避免用户不小心关掉窗口,导致窗口的数据要重新录入的尴尬场景。本篇随......
  • 【WPF】PasswordBox汇总
    一、回车事件写法1:绑定:TextPassWord.KeyDown+=TextPassWord_KeyDown;privatevoidTextPassWord_KeyDown(objectsender,KeyEventArgse){if(e.Key==Key.Enter){TextErr.Text=null;......
  • wpf 覆盖元素在webview2之上
    元素代码来源githubCrissCross项目需要两个工具类及一个webview2的封装类//Copyright(c)ChrisPulman.Allrightsreserved.//LicensedundertheMITlicense.SeeLICENSEfileintheprojectrootforfulllicenseinformation.usingSystem;usingSystem.Runt......
  • [WPF]万物皆可绑定
    最近一个项目有一个需求,需要在ComboBox中选择时,获得SelecetedValue值并执行一个方法,查了一下可以用Interactivity进行触发器重写,用一个事件来绑定命令。但网上很多资料真的很坑,写了方法但是没提前提条件,需要在NuGet中安装一个Microsoft.Xaml.Behaviors.Wpf包来支持这个功能,然后在......
  • 当一个接口需要调用多个其他服务的接口时,可以使用异步编程来实现并发调用,以提高效率
    usingSystem;usingSystem.Collections.Generic;usingSystem.Threading.Tasks;publicclassOrderController{publicasyncTask<OrderInfo>GetOrderInfo(intorderId){//并发调用多个接口Task<UserInfo>getUserInfoTask=GetUserInfoAsync(orderId);Task......
  • 从 5s 到 0.5s!CompletableFuture 异步任务优化技巧,确实优雅!
    一个接口可能需要调用N个其他服务的接口,这在项目开发中还是挺常见的。举个例子:用户请求获取订单信息,可能需要调用用户信息、商品详情、物流信息、商品推荐等接口,最后再汇总数据统一返回。如果是串行(按顺序依次执行每个任务)执行的话,接口的响应速度会非常慢。考虑到这些接口之间......
  • Mybatis 05 注解实现增删改查
    UserMapperpublicinterfaceUserMapper{/*注解实现增删改查*/@Select("select*fromtb_user")List<User>selectAll2();@Insert("insertintotb_uservalues(null,#{username},#{password},#{gender},#{addr})")voidinsert......
  • Python异步编程高并发执行爬虫采集,用回调函数解析响应
    一、问题:当发送API请求,读写数据库任务较重时,程序运行效率急剧下降。异步技术是Python编程中对提升性能非常重要的一项技术。在实际应用,经常面临对外发送网络请求,调用外部接口,或者不断更新数据库或文件等操作。这这些操作,通常90%以上时间是在等待,如通过REST,gRPC向服务器发送请......
  • 探索 WPF 的 ITabletManager.GetTabletCount 在 Win11 系统的底层实现
    本文将和大家介绍专为WPF触摸模块提供的ITabletManager的GetTabletCount方法在Windows11系统的底层实现本文属于WPF触摸相关系列博客,偏系统底层介绍,更多触摸博客请看WPF触摸相关大家都知道在Windows7系统,有专门的笔和触摸服务提供触摸消息的支持。而WPF是从V......