Каков наилучший (ые) способ (ы), чтобы пользователь не запутался в этом "Условии гонки"?
Это может быть очень глупый вопрос.
Один графический интерфейс с окном, поддерживающим операции мыши с объектами в этом окне.
Например, пользователь может перемещать, толкать и т. Д. Объект из A -> B.
(Это повлияет на пару серверов, поэтому это простая операция с большой мощностью)
Если другой пользователь уже что-то сделал с этим объектом, сервер (ы) позаботится о конфликтах, слияниях и т. Д.
Но наш оригинальный пользователь должен получить какую-то обратную связь, потому что это может произойти в одно и то же время.
(То есть пользователь перемещает объект в одном потоке, а приложение получает уведомления в другом потоке)
Это не имеет никакого отношения к коду, даже если можно утверждать, что поток recv похож на внутреннее хранилище, а графический интерфейс может быть «блокировкой» при нажатии / перетаскивании мыши.
Вы думаете, что уронили Объект на B, но на самом деле он появляется в B ', B' ', C, D (или исчез).
Мне вообще не нравятся MessageBoxes, и даже невозможно всплыть для каждой мелочи.
И нет, вы не можете заблокировать объект для пользователя, когда пользователь начинает перетаскивать его (вместо этого подумайте о передаче сообщения)
Возможно, можно использовать анимацию, которая позволит Пользователю увидеть приземление Объекта на B, а затем переместить, анимировать, на B ', B' ', C или D (или испариться).