У меня есть метод Update (), который вызывается AsyncOperation через .Post (). Когда я помещаю MessageBox в эту функцию, я получаю несколько ящиков сообщений и пытаюсь понять, почему это происходит.
Окно сообщений должно остановить выполнение Update () до тех пор, пока не будет нажата кнопка «ОК», но из-за .Post () я получаю повторный вход в Update (), в результате чего следующее окно сообщений появляется до закрытия предыдущего. 1003 *
Моей первой мыслью было поместить SyncLock в Update (), чтобы он никогда не мог работать одновременно, но это не имело никакого эффекта. Когда я вывожу .ManagedThreadID в MessageBox, все вызовы имеют одинаковый идентификатор потока, поэтому кажется логичным, что SyncLock не имеет никакого эффекта, потому что он блокирует только разные потоки.
Так может кто-нибудь объяснить, что здесь происходит? Как один поток может одновременно выполнять одну и ту же функцию?