Почему безопасность обновлений межпотокового пользовательского интерфейса не обрабатывается автоматически?
Чтобы обеспечить безопасность потоков при потенциальном обновлении пользовательского интерфейса из другого потока, нам нужно написать шаблон if (Control.InvokeRequired()) Invoke(..)
или что-то эквивалентное.Может ли среда выполнения наблюдать, когда я вызываю метод обновления пользовательского интерфейса из другого потока, и собираю вызов для меня?Он должен знать, когда это необходимо, потому что он выдает исключение, если вы пытаетесь сделать это без необходимых мер предосторожности.
Может ли компилятор просто применять шаблон для меня при каждом вызове обновления пользовательского интерфейса?Если это приведет к неприемлемым издержкам, возможно, эта функция может контролироваться атрибутом приложения (разработчик может применять этот атрибут только при написании многопоточного приложения, в котором будут происходить обновления многопоточного интерфейса).
Я могу представить несколько возможных ответов: либо это глупая идея, либо она невозможна, либо непрактична, либо она просто не дает достаточной ценности для оправдания затрат на разработку.