c# winform에서 다중 루틴을 사용하여 백엔드에서 데이터 gridview 데이터를 정시 리셋하는 것에 관하여

1860 단어 c#
배경.
본인 c#초보자, 최근에 회사에서 요구한 프로그램은 백엔드에서 정해진 시간에 조회하는 데이터를 데이터gridview에 연결해야 합니다. 프로그램에 가사가 발생하지 않고 우호적인 체험을 할 수 있도록 하기 때문에 다른 라인을 만들어서 데이터를 조회하는 데 사용하고 데이터를 데이터gridview에 표시하려고 합니다.프로그램이 완성되었을 때 본 기기에서 코드 디버깅도 문제가 없고 완벽했다. 그러나 실제 운용할 때 데이터gridview의 인터페이스에 문제가 생겼다. 데이터가 없고 큰 빨간 포크가 표시되며 오류가 발생했다.이전에는 컴퓨터 환경의 문제인 줄 알았는데, 나중에야 원인을 찾았는데, 다중 스레드의 사용이 부적절한 문제였다.다음은 동생의 해결 방법입니다. 현재로서는 이 상황을 발견하지 못했습니다.만약 이 방법이 적용되지 않거나 더 좋은 방법이 있다는 것을 발견한 사람이 있다면 알려주십시오. 감사합니다.신들의 지도를 환영합니다!
구현 코드
        /// 
        ///     (      )
        /// 
        private void searchData()
        {  

            //      
            Thread th = new Thread(new ThreadStart(StartSearchData));
            th.IsBackground = true;//       ,            ,         ,          
            th.Start();
        }


        bool IsReflash = false;//    while   ,         ,               true,          ,   false  
        private delegate void InvokeHandler();//               
        /// 
        ///          
        /// 
        private void StartSearchData()
        {
            try
            {

                while (IsReflash)
                {
                    DataTable dt = new DataTable();
                    dt = GetInfo.getCLC_SO_Info();
                    if (this.IsHandleCreated)//         ,         Invoke  BeginInvoke
                    {
                        this.Invoke(new InvokeHandler(delegate()
                        {
                            dgv_Main.DataSource = dt;
                        }));
                    }
                    Thread.Sleep(5000);//      
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "  ", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

좋은 웹페이지 즐겨찾기