WPF 异步执行 Action Func
private void Operate_OnClick(object sender, RoutedEventArgs e) { AsyncFindBox(); RadWindow.Alert("测试测试!"); } private void AsyncFindBox() { #region 需要将返回结果返回到UI上。 //异步任务封装在一个delegate中, 此delegate将运行在后台线程 Func<string> asyncAction = this.AsyncActionMethod; //在UI线程中得到异步任务的返回值,并更新UI //必须在UI线程中执行 Action<IAsyncResult> resultHandler = delegate(IAsyncResult asyncResult) { //异步执行后,将值更新到UI上。 //string result= asyncAction.EndInvoke(asyncResult); //SearchValue.Text=result; }; //异步任务执行完毕后的callback, 此callback运行在后台线程上. //此callback会异步调用resultHandler来处理异步任务的返回值. AsyncCallback asyncActionCallback = delegate(IAsyncResult asyncResult) { Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, resultHandler, asyncResult); }; //在UI线程中开始异步任务, //asyncAction(后台线程), asyncActionCallback(后台线程)和resultHandler(UI线程) //将被依次执行 asyncAction.BeginInvoke(asyncActionCallback, null); #endregion #region 不需要将返回结果返回到UI上的。 //Func<string> asyncAction = this.AsyncActionMethod; //asyncAction.BeginInvoke(null, null); //Action asyncAction = this.FindBox; //方法无返回值 //asyncAction.BeginInvoke(null, null); #endregion } private string AsyncActionMethod() { var commandMessage = ""; Thread.Sleep(5000); Console.WriteLine(1111); // 发射亮灯 BasketLight.SendCmd(5, BasketLight.CmdType.Ready, 0, ref commandMessage); return ""; } private void FindBox() { var commandMessage = ""; Thread.Sleep(5000); Console.WriteLine(1111); // 发射亮灯 BasketLight.SendCmd(5, BasketLight.CmdType.Ready, 0, ref commandMessage); }
本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/vipsoft/p/4535037.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库