我正在通过c# winforms开发一个项目。我在导航到表单时遇到了问题。
我使用的是经典的表单导航。
当我点击我的主窗体上的一个按钮时,将会打开一个新的窗体,上面有很多项。
以下是我使用的代码。
frmMuayAnaEkran frm = new frmMuayAnaEkran();
frm.ShowDialog();
所以问题是表单创建太慢了。真的,打开需要8-10秒。如何解决此问题?这是我想打开的表单屏幕:http://j.mp/VRMyby
发布于 2012-12-31 15:51:00
假设您在加载表单时要做以下事情:
void LoadStartupItemsAndDataBlahBlah(object sender, DoWorkEventArgs e)
{
int s = 0;
for (int i = 0; i < 1000; i++)
for (int j = 0; j < 1000; j++)
for (int k = 0; k < 1000; k++)
s++;
MessageBox.Show(s.ToString());
}
如果在窗体加载中调用此方法
private void Form5_Load(object sender, EventArgs e)
{
Stopwatch t = new Stopwatch();
t.Start();
LoadStartupItemsAndDataBlahBlah(null,null);
t.Stop();
this.Text = string.Format("[{0}] mili-seconds", t.ElapsedMilliseconds);
}
您的表单将在大约5秒(5000毫秒)后运行,并显示一个显示1000000000
的消息框
但是如果你在后台运行这个方法
private void Form5_Load(object sender, EventArgs e)
{
BackgroundWorker bg = new BackgroundWorker();
bg.DoWork += new DoWorkEventHandler(LoadStartupItemsAndDataBlahBlah);
Stopwatch t = new Stopwatch();
t.Start();
bg.RunWorkerAsync();
t.Stop();
this.Text = string.Format("[{0}] mili-seconds", t.ElapsedMilliseconds);
}
您的表单加载速度非常快,大约只需0-1毫秒,5秒后消息框将到达并显示其值1000000000
发布于 2012-12-31 15:30:33
我猜问题是因为您在表单构造函数或FormCreated事件中执行了一些开销很大的操作。也许你正在查询一个数据库或一些远程服务。你可能会考虑几件事:
https://stackoverflow.com/questions/14098766
复制相似问题