小编use*_*413的帖子

异步串口读取的正确实现

我在这里阅读了一些建议与port.BaseStream.ReadAsync()waith async/await 一起使用的线程。我不清楚实施此操作的最佳方法是什么?

我是否仍然使用 event_handler 并将其设为异步/可等待?

private async void myPort_DataReceived(object sender,      SerialDataReceivedEventArgs e)
        {
            byte[] buffer = new byte[myPort.BytesToRead];
            await (myPort.BaseStream.ReadAsync(buffer, 0, buffer.Length));
        }
Run Code Online (Sandbox Code Playgroud)

或者事件处理程序是否完全被忽略,而是我在循环中调用 ReadAsync?

编辑:解析后,我将 1) 将数据发送到 TCP 服务器,2) 将其写入 sq3lite 数据库。

c# serial-port async-await

5
推荐指数
1
解决办法
8933
查看次数

使用并重置由另一个线程不断递增的 int

我有一个任务来计算它从某个来源接收到的数据包数量。

每 250 毫秒一个计时器启动读取并将计数输出给用户。在我需要将计数设置回 0 之后。

我担心的是,在读取和显示计数之间,但在我设置计数 = 0 之前,计数在另一个线程中增加了,所以我最终通过将其归零来丢失计数。

我是线程的新手,所以我有多种选择。

我研究过使用 Interlocked 但据我所知它只给我算术运算,我没有选择将变量实际设置为值。

我也在研究 ReaderWriterLockSlim,我需要的是最有效/更少开销的方法来完成,因为有很多数据来了。

.net c# multithreading atomicity

-1
推荐指数
1
解决办法
1652
查看次数

标签 统计

c# ×2

.net ×1

async-await ×1

atomicity ×1

multithreading ×1

serial-port ×1