1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Shown += (s, e) => { OpenFolderButton.Text = "集計中..."; OpenFolderButton.Enabled = false; Task.Run(() => { string fileCount = FileCount(); Invoke(new Action(() => { OpenFolderButton.Text = "フォルダ " + fileCount; OpenFolderButton.Enabled = true; })); }); }; |
あるいは、ラムダ式をMethodInvokerにキャストする。
1 |
Invoke((MethodInvoker)(() => { needle = textBox1.Text; })); |
・Invoke()の考え方として、Invoke()を呼び出したフォームに対して
別スレッドから操作をするメソッドを渡す。
・Invoke()の呼び出し方としては、複数回コントロールにアクセスする場合、Invokeの中ではなく、Invokeを複数回呼び出すような形にする。
・スレッドが別かどうか確認する場合(Controlにアクセスして大丈夫かと考える)
Control.InvokeRequired