不是从创建该控件的线程访问它(异步,卡死)

对于跨线程访问出现不是从创建该控件的线程访问它的解决方法

1.Control.CheckForIllegalCrossThreadCalls = false;

//这种方法很容易导致look(但不是死锁,只是程序会卡死一段时间)的问题,很难找到问题出现在哪里,尝试通过把部分操作丢给控件的其他事件来完成也没效果

2.Task.Run(() =>
                {
                    this.Invoke(new Action(() =>
                    {
                        progressBarControl.Position = 0;
                    }));

                });

//这种方法是目前找到的最好的一种方法,异步的操作留给异步,需要操作控件的时候再把操作丢给创建控件的线程来完成。只是会很麻烦,每一个需要操作控件的时候都要新建一个委托。.net线程保护里面只有写入操作才做了线程保护,读取操作并没有做保护

猜你喜欢

转载自blog.csdn.net/qq_37244161/article/details/88747135