1
4
在这个方法调用期间,您拥有一个锁吗?UI线程上的另一个方法正在尝试获取?这当然可以解释。 会发生这种事吗 每一个 时间?这显然会使诊断更容易。 对于我来说,这是不寻常的,我建议去调试器:只需点击break,看看线程在做什么。
最后,我知道你需要结果…但是如果你
做
呼叫
|
2
1
在您试图使用invoke时,UI线程是否正在对其他对象(可能是您的后台线程)进行阻塞调用?如果是这样,那么你的手上就有一个典型的死锁。两个线程,每个线程等待另一个线程返回。 在Windows窗体中,它们经常在幕后进行“消息泵送”,这通常是在您最不希望出现死锁的情况下进行的,但很多时候它会造成更多的问题,并且由于意外的可重入性,很难找到错误。 如果您不认为您的UI线程正在进行阻塞调用,那么应该在调试器中运行应用程序,并在死锁发生时闯入调试器。然后在线程窗口中查找主线程。双击主线程,然后查看调用堆栈窗口,查看主线程的位置。 您也可以尝试显式地指定发送程序的优先级,尽管我认为如果存在真正的死锁,这并不重要。 |
3
1
我最终找到了解决我问题的方法:我只需要在一个新线程上显示对话框,并使用它自己的调度程序。以下是修改后的代码:
|
Gojira · 为什么方法调用失败并出现参数异常? 7 年前 |
totoro · Java-调用方法时的继承和变量类型 8 年前 |
Slashy · 直接绘制到PictureBox 9 年前 |
joe · 参数和调用处理程序的问题 10 年前 |
Pakk · VB.net Windows窗体中的尝试-多线程 11 年前 |
Phil · C#将类强制转换为接口列表 12 年前 |
ianXian · 在WPF的线程中添加Canvas Children失败 12 年前 |