Поток t2 не может видеть данные переменной Msg при их изменении или обновлении.
На самом деле поле Msg
является изменчивым. Таким образом, любое изменение этой переменной будет видно для любого потока, который обращается к ней.
Ваша проблема в том, что поток t2 не видит обновления Msg
, потому что его метод run()
не заботится об обновлении Msg
.
Используется только для передачи на UpdateUI()
:
UpdateUI(_restResource.Msg);
Тогда поток t2 закончен.
Чтобы иметь возможность использовать новое значение Msg
в t2
, вы должны разрешить t2
не завершиться и получать уведомления при изменении значения Msg
.
Таким образом, он может вызвать UpdateUI(_restResource.Msg);
с новым значением.
Обратите внимание, что это будет работать, но добавит дополнительную логику.
На самом деле, кажется, нет необходимости иметь поток для вызова UpdateUI()
.
Кажется гораздо более естественным, что GetResource()
напрямую вызывает метод UpdateUI()
.