Tag: 日志文件

来自TextFile的Lifeupdate DataGrid具有良好的性能

实际状态: 我有一个带有4列的DataGrid (Icon | DateTime | LogLevel | Message) 我用它作为查看器来呈现LogFile条目。 打开Window ,UI滞后,很多条目逐个添加到DataGrid 。 注意:我已经在使用多个线程。 我的UI-Thread没有冻结。 它只是采取长期填充整个DataGrid 。 我想要的是: 在向用户展示之前,我更喜欢“预渲染”整个窗口之类的东西。 当我打开Window一次 – 每次我再次打开它时,它就不再有问题了。(不能渲染新的……?) 我试过的: 将Visibility设置为Hidden并等待( Thread.Sleep() )10秒然后设置Visibility = Visibility.Visible ; 在ViewModel-Constructor中将所有数据添加到我的DataGrid中 但这一切并没有真正解决它。 我甚至不确定它是C#代码还是只是Bindings …… 这可能是一个愚蠢的问题,但有没有办法在显示之前“预渲染” DataGrid及其Content ? 编辑: 我也使用一些DataTriggers来设置RowColor,但这可能不是问题。 这是我使用的一些代码: 入门级: public class LogEntry { public string LogLevel { get; set; } public string LogLevelIcon { […]

刷新日志到磁盘,在VerifyOSHandlePosition中例外

如何从C#服务编写日志文件,以便及时刷新到磁盘? 这是我尝试过的。 在记录代码中,我打开了一个这样的文件: var file = return File.Open(name, FileMode.Append, FileAccess.Write, FileShare.Read); var writer = new StreamWriter(file); 并写信给它: writer.WriteLine(msg); writer.Flush(); file.Flush(); 但是,日志未及时刷新到磁盘。 所以我尝试添加一个5秒计时器,这样做: [DllImport(“kernel32.dll”)] static extern bool FlushFileBuffers(IntPtr hFile); file.Flush(); var hdl = file.SafeFileHandle; FlushFileBuffers(hdl.DangerousGetHandle()); 这似乎有效,但在不经常的时间间隔我得到以下exception: System.IO.IOException: The OS handle’s position is not what FileStream expected. Do not use a handle simultaneously in one FileStream and […]