首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用任务/异步/等待替换后台工作进程?

用任务/异步/等待替换后台工作进程?
EN

Stack Overflow用户
提问于 2020-03-19 20:58:21
回答 1查看 137关注 0票数 1

我发送一个7字节的TX命令,我将接收一个7字节的RX响应。

如果可能,我想将接收字节任务链接到发送字节任务,因为这似乎只是逻辑上的。

我知道后台工作人员已经过时了,他们希望通过使用Task-Parallel-Library来实现代码的现代化。

有人能解释一下如何在所描述的上下文中用异步任务替换backgroundWorker_DoWork事件处理程序吗?

EN

回答 1

Stack Overflow用户

发布于 2020-03-19 22:05:25

如果您总是先发送字节,然后再接收字节,则可以使用如下代码:

代码语言:javascript
复制
public static class NetworkStreamExtensions
{
    public static async Task<byte[]> SendReceiveBytes(this NetworkStream self, byte[] toSend, int bytesToReceive, CancellationToken cancel)
    {
        await self.WriteAsync(toSend, 0, toSend.Length, cancel);
        var receiveBuffer = new byte[bytesToReceive];
        var receivedBytes = await self.ReadAsync(receiveBuffer, 0, receiveBuffer.Length, cancel);

        if (receivedBytes != receiveBuffer.Length)
        {
            // Handle incorrect number of received bytes, 
        }

        return receiveBuffer;
    }
}

因为这是使用async/await,所以它将使用当前的同步上下文来运行代码。也就是说,如果在主线程上调用,它将在主线程上发送和接收。但是,它将允许其他代码在写入和读取之间运行,因为异步方法不会阻止执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60757757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档