C # : " 'System.InvalidOperationException'유형의 첫 번째 예외"
C #에서 클래스 할당 작업을하면서 오류없이 프로그램 충돌이 발생했습니다 (VS2010의 디버그 창에 작성된 내용 제외). 충돌을 일으키는 일반적인 코드는 다음과 같습니다.
public partial class Test : Form
{
public Test()
{
InitializeComponent();
}
private void Test_Load(object sender, EventArgs e)
{
ColumnHeader header;
header = new ColumnHeader();
header.Text = "#";
header.TextAlign = HorizontalAlignment.Center;
header.Width = 30;
listView1.Columns.Add(header);
TimerCallback tcb = this.UpdateListView;
System.Threading.Timer updateTimer = new System.Threading.Timer(tcb, null, 0, 1000);
}
public void UpdateListView(object obj)
{
ListViewItem item;
listView1.Items.Clear();
for (int i = 0; i < 10; i++)
{
item = new ListViewItem(i.ToString());
listView1.Items.Add(item);
}
}
}
... 내가 여기서 뭘 놓치고 있니?
** 수정 **
오류가 없어요, 제가 전화하는 것처럼 프로그램이 종료 됩니다.System.Environment.Exit(0);
A first chance exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll
The program '[4644] ProgramTest.vshost.exe: Managed (v4.0.30319)' has exited with code 0 (0x0).
The program '[4644] ProgramTest.vshost.exe: Program Trace' has exited with code 0 (0x0).
당신이 선택하면 Thrown
위한 Common Language Runtime Exception
휴식 시간에 할 때 예외 창 ( Ctrl+ Alt+ EVisual Studio에서) 예외가 발생했을 때 디버깅하는 동안 다음 실행을 중단해야한다.
이것은 아마도 무슨 일이 일어나고 있는지에 대한 통찰력을 줄 것입니다.
The problem here is that your timer starts a thread and when it runs the callback function, the callback function ( updatelistview) is accessing controls on UI thread so this can not be done becuase of this
Consider using System.Windows.Forms.Timer
instead of System.Threading.Timer
for a GUI application, for timers that are based on the Windows message queue instead of on dedicated threads or the thread pool.
In your scenario, for the purpose of periodic updates of UI, it seems particularly appropriate since you don't really have a background work or long calculation to perform. You just want to do periodic small tasks that have to happen on the UI thread anyway.
'programing tip' 카테고리의 다른 글
웹 API 호출시 C # 지원되지 않는 권한 부여 유형 (0) | 2020.12.14 |
---|---|
Django runserver 영구 (0) | 2020.12.14 |
자바 스크립트 인쇄 iframe 콘텐츠 만 (0) | 2020.12.14 |
완료 버튼을 키보드에 추가하는 방법은 무엇입니까? (0) | 2020.12.14 |
모든 종속성 및 패키지를 디렉터리에 다운로드하는 방법 (0) | 2020.12.14 |