我的项目是一个三层架构项目,与后端的WCF服务通信。当后端能够从服务中获取数据时,它使用发布-订阅通知业务层,业务层再通知GUI层。
我在UI设计中使用了Visual Studios设计器添加了一个OpenFileDialog。一个按钮事件处理程序调用ShowDialog消息。然而,一旦我点击按钮,整个UI就会挂起。
经过一番谷歌搜索,我发现使用委托是处理这类任务的首选方式。然而,无论使用还是不使用委托,问题仍然存在。
目前我的代码看起来像这样:
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编程的细节不太熟悉。
这里有什么我不知道的吗?
private void bOpen_Click(object sender, EventArgs e) { OpenFileDialog d = new OpenFileDialog(); if (d.ShowDialog() == DialogResult.OK) { Image.FromFile(d.FileName); } };
- Vladnew Thread(del).Start();
。 - Vlad