winfrom中避免读取数据时窗口诈死
原创比较实用的一个方法,希望对你们有帮助。
net4.5才支持
//使用线程
System.Threading.Tasks.Task.Run(new Action(方法名));       //Action里的方法不允许有参数
//1.禁用异常(为解决使用线程后,DataGridView滚动条不出现*注意:不可在多线程中随便使用。)
Control.CheckForIllegalCrossThreadCalls = false;
//2.使用 Invoke 将执行数据绑定的代码交回给主线程(因为 DataGridView 是主线程创建的(为解决使用线程后,DataGridView滚动条不出现))
            DataGridView.Invoke(new InvokeHandler(delegate ()
            {
                 DataGridView.DataSource = null;
                 DataGridView.DataSource = 数据源;
            }));net4.0就可以支持
        private delegate void InitDataSourceDelegate();        
        private void Load(object sender, EventArgs e)
        {
            Thread t = new Thread(InitDataSource);
            t.IsBackground = true;
            t.Start();
        }
        private async void InitDataSource()
        {
            //我这里放的是调用Api请求,因为耗时比较久
            //GetData();
            //数据请求完成后,去执行委托把数据绑定到控件上
            this.Invoke(new InitDataSourceDelegate(Init));
        }
        private async void Init()
        {
            //给控件绑定数据源
        }版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
 itfan123
itfan123






