private void ProcessBuffer(string buffer)
        {
            try
            {
                int start = buffer.IndexOf("-") + 1;
                int end = buffer.LastIndexOf("-");
                string certificateNo = string.Empty;
                string pid = string.Empty;
                Person = null;
                if (start == end)
                    MessageBox.Show("This is not a valid certificate!!");
                else
                    certificateNo = buffer.Substring(start, end - start);

                //MessageBox.Show(string.Format("Certification Number : {0}", certificateNo));

                if (!string.IsNullOrEmpty(certificateNo))
                {
                    GetPerson gp = new GetPerson();
                    pid = gp.SearchPersonByCertificate(certificateNo);
                    if (!String.IsNullOrEmpty(pid))
                    {
                        // Set Text by Thread
                        Thread thread = new Thread(new ThreadStart(delegate()
                        {
                            DispatcherOperation dispatcherOp = txtLastName.Dispatcher.BeginInvoke(
                                DispatcherPriority.Normal, new Action(
                                    delegate()
                                    {
                                        SetPerson(false, pid);
                                        if (Person != null)
                                            FillPersonInformation();
                                        else
                                            MessageBox.Show(string.Format("Record Not Found - Certification Number : {0}", certificateNo));
                                    }
                            ));
                            //        dispatcherOp.Completed += new EventHandler(dispatcherOp_Completed);
                        }
                        ));
                        thread.Start();
                    }
                }
                else
                {
                    MessageBox.Show(string.Format("Record Not Found - Certification Number : {0}", certificateNo));
                }
            }
            catch
            {
                MessageBox.Show("Serial No is Invalid");
            }
        }
        // Serch the person data and set Person property and return bool isExist
        private bool SetPerson(bool isExist, string pid)
        {
            // Check the local database
            GetPerson gp = new GetPerson();
            Person = gp.SearchPersonByPID(pid);
            isExist = false;

            if (Person != null)
            {
                isFromLocalDB = true;
                isExist = GetDataFromXML(isExist, pid);
                if (!isExist)
                    isExist = true;
            }
            else
            {
                isExist = GetDataFromXML(isExist, pid);
            }
            return isExist;
        }