在C#Winform程序开发运行时,发现输出窗口在不断报错“引发的异常:System.InvalidOperationException(位于 System.Windows.Forms.dll 中)”
用单步调试的方法,发现在创建完其中一个窗体后,就开始报以上错误。问题代码在这:
/// <summary>
/// 更新日期
/// </summary>
private void UpdateDateTime()
{
//获取当前年月日时分秒周数信息
string dateTimeWeek =Mathematics.GetCurrentYearMonthDayHourMinuteSecondWeek();
try
{
Invoke((EventHandler)delegate { tsslbData.Text = dateTimeWeek; });
}
catch { }
}
以上方法是在窗体构造函数里创建了一个Timer,定时刷新。此时窗体并没有Show,即Load出来,所以使用Invoke就引发了异常System.InvalidOperationException”(位于 System.Windows.Forms.dll 中)。
修改方法:只需要在使用Invoke使用前,判断下该窗体是否被创建即可,如下所示。
/// <summary>
/// 更新日期
/// </summary>
private void UpdateDateTime()
{
//获取当前年月日时分秒周数信息
string dateTimeWeek =Mathematics.GetCurrentYearMonthDayHourMinuteSecondWeek();
try
{
if(this.IsHandleCreated)
Invoke((EventHandler)delegate { tsslbData.Text = dateTimeWeek; });
}
catch { }
}
网友评论