C#WebBrowser控件最终会停止渲染css动画

时间:2016-03-04 16:52:11

标签: c# css animation browser dashboard

我创建了一个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动画有上限吗?无限实际上只是一段很长的时间吗?

0 个答案:

没有答案