c#

C# DataReceived事件的异步处理

小樊
90
2024-08-08 20:55:40
栏目: 编程语言

在C#中,可以通过DataReceived事件来异步处理数据的接收。DataReceived事件通常用于读取串行端口或网络流中的数据。以下是一个示例代码,演示了如何使用DataReceived事件异步处理串行端口数据的接收:

using System;
using System.IO.Ports;

class SerialPortExample
{
    static SerialPort serialPort;

    static void Main()
    {
        serialPort = new SerialPort("COM1", 9600); // 设置串行端口和波特率
        serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

        serialPort.Open(); // 打开串行端口

        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();

        serialPort.Close(); // 关闭串行端口
    }

    static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string data = sp.ReadExisting(); // 读取接收到的数据

        Console.WriteLine("Data received: " + data);
    }
}

在上面的代码中,首先创建了一个SerialPort对象,并设置了串行端口和波特率。然后注册了DataReceived事件处理程序DataReceivedHandler。在DataReceivedHandler中,通过ReadExisting方法读取接收到的数据,并进行相应的处理。

需要注意的是,DataReceived事件是在数据接收到串行端口缓冲区时触发的,因此可以在事件处理程序中异步地处理数据。在本例中,DataReceivedHandler方法会在接收到数据时被调用,并打印接收到的数据。

最后,在Main方法中打开串行端口,并通过Console.ReadKey()方法等待用户按下任意键来退出程序时关闭串行端口。

希望这个示例能够帮助你了解如何使用DataReceived事件异步处理数据的接收。

0
看了该问题的人还看了