다음 메서드는 UserControl 생성자에서 시작됩니다. 크로스 스레드 예외가 발생하지만 이유를 알 수 없습니다.예기치 않은 크로스 스레드 예외
public override void Populate()
{
base.Populate();
LoadEditableList(IEditableList);
ThreadStart fix = null;
fix = delegate()
{
if (InvokeRequired)
{
Invoke(fix);
}
else
{
buttonAdd_Click(null, null);
}
};
var thread = new Thread(fix);
thread.Start();
}
buttonAdd_Click 메서드는 ListView에 항목을 추가합니다. 이상하게도, 만약 내가 브레이크 포인트를 if (InvokeRequired)
라인에 추가하면이 에러를 피할 수있다. 이것은 내가 수십 번 썼던 패턴과 매우 흡사합니다. 나는 새로운 아기 수면 증후군으로 인해 뭔가를 놓치고 있다고 생각합니다.
나는 당신이 옳다고 생각합니다. populate 메서드를 VisibleChanged 이벤트에 묶음으로써이 문제를 해결했습니다. 감사. –