我创建了一个C#Windows窗体应用程序,它从我们的测试环境等查询TeamCity和服务信息。 然后它解析信息并以html页面的形式发出数据。 然后我在WebBrowser控件中呈现页面。
我使用以下CSS将错误设置为闪烁的红色背景颜色。
@-webkit-keyframes invalid {
from { background-color: red; }
to { background-color: inherit; }
}
@-moz-keyframes invalid {
from { background-color: red; }
to { background-color: inherit; }
}
@-o-keyframes invalid {
from { background-color: red; }
to { background-color: inherit; }
}
@keyframes invalid {
from { background-color: red; }
to { background-color: inherit; }
}
.invalid {
-webkit-animation: invalid 1s infinite; /* Safari 4+ */
-moz-animation: invalid 1s infinite; /* Fx 5+ */
-o-animation: invalid 1s infinite; /* Opera 12+ */
animation: invalid 1s infinite; /* IE 10+ */
}
这很有效,仪表板看起来非常好,但是在离开C#应用程序运行了大约一个小时左右后,闪烁停止,解决它的唯一方法是停止应用程序,然后重新启动。
奇怪的是应用程序正在使用
while(true)true循环,以便每2分钟刷新一次页面。 从技术上讲,页面每2分钟刷新一次,但样式永远不会回来。
因为我正在从后台线程设置html内容,所以我使用以下内容来更改html内容而没有线程访问异常。
delegate void WriteHtmlDelegate(string sText);
public void WriteHtml(string sText)
{
if (InvokeRequired)
{
// We're not in the UI thread, so we need to call BeginInvoke
BeginInvoke(new WriteHtmlDelegate(WriteHtml), new object[] { sText });
return;
}
wbStatus.DocumentText = "0";
wbStatus.Document.OpenNew(true);
wbStatus.Document.Write(sText);
wbStatus.Refresh();
}
当问题发生时,样式停止闪烁,我可以右键单击并查看源代码。我能够看到我的风格仍然完好无损,并且我正在设置类的表tds也已正确设置。 所以它似乎是一个渲染问题。
我不认为通过注册表黑客改变应用程序的功能会起作用,因为这并不能解释为什么它可以工作1小时,然后停止。
css动画有上限吗?无限实际上只是一段很长的时间吗?