Я тоже встречал эту проблему. И я попробовал все решения здесь, и никто не может решить его. Затем я меняю целевой фреймворк с .Net Framework 4.7 на 4.6.2, проблема решена ...

роект - трехуровневая архитектура с поддержкой службы WCF в бэкэнде. Когда бэкэнд может извлекать данные из службы, он уведомляет бизнес-уровень с помощью публикации-подписки, которая, в свою очередь, уведомляет уровень графического интерфейса.

Я добавил OpenFileDialog в свой дизайн пользовательского интерфейса с помощью дизайнера Visual Studios. Обработчик события кнопки вызывает сообщение ShowDialog. Однако, как только я нажимаю кнопку, весь пользовательский интерфейс зависает.

Немного погуглив, я обнаружил, что использование делегатов является предпочтительным способом решения подобных задач. Однако ни с делегатом проблема сохраняется.

В настоящее время мой код выглядит так:

private void bOpen_Click(object sender, EventArgs e)
{
    Func<Image> del = delegate
    {
        OpenFileDialog d = new OpenFileDialog();
        if (d.ShowDialog() == DialogResult.OK)
        {
            return Image.FromFile(d.FileName);
        }

        return null;
    };

    Invoke(del);
}

Я родом из мира Java, поэтому я не очень знаком со сложностями программирования на C # UI.

Что-то мне здесь не хватает?

Ответы на вопрос(5)

Ваш ответ на вопрос