UIスレッドにメソッドを呼び出すと、スレッドはWindowsメッセージキューによって検索され、その後リエントラントである必要はありませんか?UIスレッドでマーシャリングされたメソッドはスレッドセーフである必要があります
private void CalledFromWorkerThread()
{
//changed from 'InvokeRequired' Anti-Pattern
this.Invoke((Action) (() => _counter++; /* Is this ok? */));
}
明確化:_counterにアクセスするUIスレッドのみです。
まだカウンターをロックしていない場合は、カウンターを使用する必要があります。 –
こちらもご覧ください:http://www.yoda.arachsys.com/csharp/threads/winforms.shtml –
「InvokeRequired」のテストは反パターンです。 'Control.Invoke'はすでにこのようなチェックを含んでいます。 –