Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将SerialDataReceiveDevenHandler追加到列表中以返回到main方法_C#_Serial Port - Fatal编程技术网

C# 将SerialDataReceiveDevenHandler追加到列表中以返回到main方法

C# 将SerialDataReceiveDevenHandler追加到列表中以返回到main方法,c#,serial-port,C#,Serial Port,我在string[]toArray=tagList.toArray()上得到空值和空值 我要做的是将一个字符串数组列表从ReadTag()返回到我的main方法。port\u DataReceived似乎不会将任何列表返回到ReadTag的函数tagList。我猜这是个愚蠢的问题,请帮忙。谢谢 ReadTag()函数的代码: List<string> tagList = new List<string>(); public string[] Readtag()

我在
string[]toArray=tagList.toArray()上得到空值和空值tagList
时的代码>

我要做的是将一个字符串数组列表从ReadTag()返回到我的main方法。
port\u DataReceived
似乎不会将任何列表返回到ReadTag的函数
tagList
。我猜这是个愚蠢的问题,请帮忙。谢谢

ReadTag()函数的代码:

 List<string> tagList = new List<string>();
    public string[] Readtag()
    {
        
        //port connections option
        _serialPort.WriteLine("RLD");
        _serialPort.ReadTimeout = 2000;
        _serialPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
        string[] toArray = tagList.ToArray();
        Console.WriteLine(tagList);
        return toArray;
    }

我找到了一个解决方案,让线程休眠几秒钟,让EventHandler在显示之前将所有结果附加到标记列表中。

这里有各种各样的问题,但主要问题是事件处理程序不会立即运行,而是在事件发生时运行。
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
       
        var result = string.Empty;
        result += _serialPort.ReadExisting();

        while (result.Contains(@"TID"))
        {
            var slashPos = result.IndexOf(@"TID", 1);
            result = result.Replace("TID ", "");
            Console.WriteLine(result);
            tagList.Add(result);
        }
        
    }