我在程序主窗体中new了两个子窗体(一个是项目中以前就有的窗体,一个是我新建的窗体),然后在一个类中的下面方法分别调用执行这两个窗体的委托。为什么一个窗体的 c.InvokeRequired是true,我新建的那个窗体的 c.InvokeRequired则是false呢。并且我新建的这个窗体在执行这个方法显示窗体未响应。
public void InvokeEvents(Delegate Event, params object[] args)
{
if (Event != null)
{
Delegate[] events = Event.GetInvocationList();
foreach (Delegate d in events)
{
System.Windows.Forms.Control c = d.Target as System.Windows.Forms.Control;
if (c != null && c.InvokeRequired)
{
//如果主窗口正在关闭,则不触发事件
try
{
if (c.Disposing == true)
continue;
c.Invoke(d, args);
}
catch(Exception ex)
{
ex = new Exception(d.Target.ToString());
HJCommon.Helper.ExceptionHelper.Instance.WriteEmailLog(ex, false, "");
HJCommon.WriteLog.Instance.AppendErrorLog(ex.ToString());
}
}
else
{
try
{
d.DynamicInvoke(args);
}
catch (System.Exception err)
{
HJCommon.Helper.ExceptionHelper.Instance.WriteConsoleLog("发生一次异步调用错误!" + err.ToString());
HJCommon.WriteLog.Instance.AppendErrorLog(err.ToString());
}
}
}
}
}
你这样是为了得到一个什么样的效果