我在 Application_Start ( Global.asax )中创建了一个与自定义类( Casa.cs )属性交互的计时器:
protected void Application_Start()
{
...
Casa.LastUpdate = DateTime.Now; //ERROR
System.Timers.Timer timer = new System.Timers.Timer(60000); // 1 minute
timer.Enabled = true;
timer.Elapsed += new System.Timers.ElapsedEventHandler(Casa.SetLastUpdate);
}
在 ABOVE 示例中,Casa.LastUpdate = DateTime.Now;
立即返回异常(' System.StackOverflowException' )。因此,如果我对其进行评论,它会继续尝试设置ViewBag.LastUpdate = Casa.LastUpdate;
的Controller,但这行代码会在{{em>' System.StackOverflowException' }上生成异常 Casa.cs 类的{1}}部分。
我(显然)无法从View访问。
Casa.cs 类:
get { return LastUpdate; }
所以我的问题是, Casa.cs 类出了什么问题,我无法在 Global中设置 LastUpdate 属性。 asax 既不将它添加到Controller中的ViewBag中,也不从View中访问?
答案 0 :(得分:0)
问题在于,在属性设置器中,您尝试设置相同的属性,而不是例如:class field。 Setter一遍又一遍地调用自己,直到堆栈溢出。
另外set { LastUpdate = DateTime.Now; }
似乎不正确,也许你会set { lastUpdate = value; }
?
尝试类似:
private static DateTime lastUpdate
public static DateTime LastUpdate
{
get { return lastUpdate; }
set { lastUpdate = DateTime.Now; }//or: = value
}