在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
主要出现问题代码如下:
public void runSEO()
{
while ((urlhead = sr.ReadLine()) != null)
{
try
{
num = num + 1;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlhead + url);
request.Timeout = int.Parse(tout.Text.ToString()) * 1000;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if(labb.IsHandleCreated)
labb.Invoke(labchange);
}
catch
{
}
}
sr.Close();
if(run.IsHandleCreated)
run.Invoke(btnchange);
this.myThread.Abort();
}
当调试运行中突然关闭软件时,labb.Invoke(labchange);语句就出先了“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。”错误。想了一通出现这种情况应该有两种可能。第一种应该是界面还来不及响应Invoke,第二种是界面线程已经结束,所以响应不了。最后解决办法是在labb.Invoke(labchange);前加一个if(labb.IsHandleCreated)判断就可以了。