这样做的问题是我在这里使用了提示和技巧,但似乎在循环中运行并且不会给出结果。
基本上我运行BackgroundWorker
来获取网址获取结果并将结果粘贴到某些Labels
。
我使用了Form_Activated
,但它只是继续在循环中运行,并且不会停止到达BackgroundWorker
已完成的事件。
主要代码块:
在Form_Load上运行函数并获取结果并显示:
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Show();
if (!backgroundWorker1.IsBusy)
{
backgroundWorker1.RunWorkerAsync();
}
else
{
MessageBox.Show("Thread already running....");
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
loadData(); // scrape a URL and paste info to Labels ....
}
就是这样,现在用户将最小化应用程序,现在每当他点击任务栏图标时,表单应该重新运行与Form_Load相同。我希望有意义,我已经能够使用Form_Activate做到这一点,但它一直在继续。
有任何建议如何完成它?
答案 0 :(得分:2)
我会存储一个布尔值来记住表单是否在最后一个FormResized事件中被最小化,然后如果它是,如果表单当前没有被最小化,那么请调用你的方法。
private bool minimized = false;
public void FormResized(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
minimized = true;
}
if (minimized && this.WindowState != FormWindowState.Minimized)
{
minimized = false;
MyMethod();
}
}