一、async/await 核心(必懂)
✅核心本质:异步不阻塞线程,工控里用来处理串口 / 网口通信、PLC 数据读写、数据库查询,不卡 UI / 主程序✅关键规则(3 条铁律,记死)
- async 修饰方法,返回值只能是 void(少用)、Task(无返回)、Task<T>(有返回)、ValueTask<T>
- await 必须跟在 awaitable 类型(Task/ValueTask 等)前,只能在 async 方法里用
- 异步方法名统一加 Async 后缀(规范)
✅通俗理解(工控比喻)
- 同步:主线程去读 PLC,站那等 10 秒,期间啥也干不了(卡界面)
- 异步:主线程派个小弟(子任务)去读 PLC,自己继续刷新界面 / 处理其他信号,小弟读完回来唤醒主线程
✅基础实用代码(工控常用)
// 异步读PLC(有返回值)
public async Task<bool> ReadPlcDataAsync(string ip, int address)
{
// await 后跟耗时操作:TCP通信/串口读写,不阻塞主线程
var client = new TcpClient();
await client.ConnectAsync(ip, 102); // 异步连接PLC,核心await
// 后续读写逻辑...
return true;
}
// 调用异步方法(3种正确方式)
// 方式1:UI/主线程调用(推荐,不卡)
private async void Btn_ReadPlc_Click(object sender, EventArgs e)
{
bool result = await ReadPlcDataAsync("192.168.0.1", 0);
}
// 方式2:后台任务调用
Task.Run(async ()=> await ReadPlcData

最低0.47元/天 解锁文章
739

被折叠的 条评论
为什么被折叠?



