对于跨线程访问出现不是从创建该控件的线程访问它的解决方法
1.Control.CheckForIllegalCrossThreadCalls = false;
//这种方法很容易导致look(但不是死锁,只是程序会卡死一段时间)的问题,很难找到问题出现在哪里,尝试通过把部分操作丢给控件的其他事件来完成也没效果
2.Task.Run(() =>
{
this.Invoke(new Action(() =>
{
progressBarControl.Position = 0;
}));
});
//这种方法是目前找到的最好的一种方法,异步的操作留给异步,需要操作控件的时候再把操作丢给创建控件的线程来完成。只是会很麻烦,每一个需要操作控件的时候都要新建一个委托。.net线程保护里面只有写入操作才做了线程保护,读取操作并没有做保护