私はC#.NETでWinFormsアプリケーションを作成しており、ワーカースレッドからリストビューを更新したいと考えています。私はここでこれについてのすべてのポストを読んだことがあるが、Invokeとdelegateの使用を完全には理解していない。実際、ここでのいくつかの例は、静的関数から非静的なコントロールを呼び出すことで文句を言うので、コンパイルされません。静的メソッドからメンバ変数にアクセスしますか?
私はListListItemを持っています。これはAddListItem(...)を介してUIスレッドに渡したいだけです。これを行う最善の方法は何ですか?現時点では
私は、これは静的関数であるMyForm::AddListView()
からである
this.lvcontrol.Invoke(new Action(() => lvcontrol.Items.Add(item)));
を持っています。しかしもちろん、コンパイラは静的メソッドから "this"または単に "lvcontrol"を呼び出すことはできないと不平を言っています。メソッドが静的でない場合は、Formのメンバ関数である静的ワーカースレッドからメソッドを呼び出すことはできません。
なぜ 'MyForm.AddListView'は静的ですか? – Richard
私は静的なスレッドメソッドから呼び出すことができます – Jonnster
なぜスレッドメソッドは静的ですか? –