мой проект - трехуровневая архитектура с поддержкой службы WCF в бэкэнде.Когда бэкэнд может извлекать данные из службы, он уведомляет бизнес-уровень с помощью публикации-подписки, которая в свою очередь уведомляет слой GUI.
Я добавил 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.
Что-то мне здесь не хватает?