У меня есть свойство, возвращающее выбранный элемент группы радиоблоков.
public string P1 { get => CB.SelectedItem as string; }
И оно используется в асинхронной функции, которая вызывается в конструкторе класса.
async Task F() {
var b = P1?.Equals(".........", StringComparison.InvariantCultureIgnoreCase) ?? false;
var t1 = callAsync().ContinueWith(x => {
if (b) { .../* use x*/... }
});
await t2;
await t1; //...
Код работает нормально.Однако b
используется во многих местах, поэтому я создал для него свойство и удалил локальную переменную var b = P1?Equals(....
.
bool b => P1?.Equals(".........", StringComparison.InvariantCultureIgnoreCase) ?? false;
async Task F() {
var t1 = callAsync().ContinueWith(x => {
if (b) { .../* use x*/... } // Exception if F() is called in constructor
});
await t2;
await t1; //...
Теперь при доступе CB.SelectedItem
?
появляется следующая ошибка
Операция с несколькими потоками недопустима: доступ к элементу управления 'CB' осуществляется из потока, отличного от потока, в котором он был создан.
Обновление: Я нашел всекод работает, если не вызывается из конструктора.