WinForm事件遇到异步方法的处理方式

我们在WinForm开发的过程中,如果我们遇到异步的需求是无法直接处理的,因为WinForm的大部分事件其实是同步事件,他没有完善的机制去等待异步的响应(当然部分事件除外,比如shown);在这种情况我们可以通过Task.Run(...)方法来实现

c 复制代码
Task.Run(() => GetComputerInfoTable());
periodicService = new PeriodicService();
Task.Run(() => periodicService.StartAsync());

类似这样的代码块它可以以一种模拟同步的情况来执行异步,在这个方法里面() => GetComputerInfoTable():这是一个lambda表达式,它定义了一个匿名方法,该方法在调用时执行GetComputerInfoTable方法。Lambda表达式() =>表示一个没有参数的方法。如果你需要传递参数,你可以在括号内指定它们。GetComputerInfoTable()是要异步执行的方法的调用。采用这种方法他同步会返回一个task对象,那么对于这个事件来说整体是同步的,他无需等待异步的响应,但是异步的线程队列又不会被杀死,仍可正常执行;

这样我们就可以放入Load事件去执行一些异步线程,但是这种情况也只能适用于无需窗体UI响应的情况,因为这种情况实际上是跳过了异步的响应对象,如果对于UI的异步等待响应的话,则需要进一步的处理

相关推荐
weixin_4492900112 小时前
uv打包Python为exe步骤
开发语言·python·uv
Flittly12 小时前
【SpringAIAlibaba新手村系列】(9)Text to Image 文本生成图像技术
java·spring boot·agent
Flittly12 小时前
【SpringAIAlibaba新手村系列】(10)Text to Voice 文本转语音技术
java·spring boot·agent
诸葛大钢铁13 小时前
Java实现Excel文件合并
java·windows·excel
黎明丶之前13 小时前
Spring Cloud Gateway 升级与 Bucket4j 限流实践
java·spring cloud
程序员木圭13 小时前
05-告别逻辑混乱!Java 流程控制让代码学会"判断和循环"
java·后端
yaaakaaang13 小时前
三、抽象工厂模式
java·抽象工厂模式
kongba00713 小时前
复刻 Claude Code 项目御马术缰绳系统 harness engineering 落地蓝图
java·linux·服务器
tERS ERTS13 小时前
Spring Cloud gateway 路由规则
java
ZUNr113 小时前
手写一个迷你版 @Column:注解到底是怎么工作的?
java