请问关于serialport的这段代码收到一个数据后应该触发的哪里

我有一段代码如下:

           SerialPort sp = new SerialPort();
           sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
            private void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {//①
                ...
                //跨线程访问UI
                this.Dispatcher.Invoke(new Action(() =>
            { //②
                        ...
            }))
        }

现在通过串口传进来一个数据,以我的理解不是应该debug的时候到①这里吗,为什么实际debug时候是到②这里呢?求大神解惑

        //串口接收事件
        private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {   //断点1

            int n = serialPort1.BytesToRead;//端口缓冲区字节数
            byte[] byteRev = new byte[n]; //将端口缓冲区数据存入字节数组
            serialPort1.Read(byteRev, 0, n);
            string message = ""; //将字节数组存入程序缓冲区
            for (int i = 0; i < n; i++)
            {
                message += byteRev[i].ToString("X2");
            }

            this.Invoke(new Action(delegate()
            {   //断点2
                ListViewItem lvi = new ListViewItem();
                lvi.Text = SearchSeq.ToString();
                SearchSeq++;
                lvi.SubItems.Add(getTime_L());
                this.lv_device_search.Items.Add(lvi);
            }));

            handle += message;//断点3

我写了一段代码,运行顺序是断点1=>断点2=>断点3