Tag: 实时

如何使用C#在双Y轴ZedGraph图形中添加实时数据?

对于我的项目,我需要添加和更新实时数据到我的双y轴图。 Y和Y2值共享相同的X值,我已经创建了它。 现在我有一个函数可以将新的点对添加到曲线列表中。 这是我的问题:我的Y和Y2值总是被添加到第一条曲线的曲线列表中。 如何将Y2值添加到图表中的第二个曲线列表中? 这是我的function代码: private void AddDataToGraph(ZedGraphControl zg1, XDate xValue, double yValue1, double yValue2) { // Make sure that the curvelist has at least one curve. if (zg1.GraphPane.CurveList.Count <= 0) return; // Get the first CurveItem in the graph. LineItem curve = zg1.GraphPane.CurveList[0] as LineItem; if (curve == null) return; // Get the […]

系统时钟调整会影响在C#中运行秒表吗?

假设我在我的代码中运行了Stopwatch ,在中间,其他一些应用程序已经改变了系统时钟(我的服务器上的域时间每秒同步)。 它会影响秒表结果吗?

如何正确使用实时优先级

我的问题可能并不是真正的实时处理,但话说可能是。 我的应用程序有几个比GUI重要得多的线程,但我确实希望GUI至少可以使用。 我不希望它一直被锁定,我确实想要更新屏幕给出我正在执行的处理结果。 目前我所有必需的项目都是在单独的线程中隔离的,我调用GUI的代理来显示结果。 我的GUI工作,但如果我更改标签,或最小化/最大化它,已知会阻碍我的其他线程,他们无法在0.1s的时间限制内执行操作。 这就是我打电话给我的代表所做的事情: delegate void FuncDelegate(ResultContainer Result); FuncDelegate DelegatedDisplay= new FuncDelegate(DisplayResults); //then later on Invoke(DelegatedDisplay, Result); 我的大多数关键进程都是在连续循环中运行的线程,从各种缓冲区(ArrayLists和普通列表)拉出并推送到各种缓冲区。 每次都会启动我的一个关键线程,使用: Thread mythread = new Thread(new ThreadStart(ProcessResults)); mythread.Start(); 我之所以这样做,而不是只是让一个线程在一个循环中运行,从列表中拉出来的原因,我想也许我的时钟时间用完的原因是我有一个我担心消耗太多的轮询循环资源(虽然每次轮询结果为负时我都使用Thread.Sleep(5))。 每次我需要并发进程时启动一个新线程会花费我宝贵的时间吗? 这应该是一个循环吗? 我的循环应该受到责备吗? 我可以给一个线程比其他线程更高的优先级,还是使用Thread.Sleep我唯一的选择? 如果我确定分配更高的线程优先级,我怎么能确定其他线程甚至可以存活? 为什么简单的表单事件会妨碍我的其他线程呢? 有没有办法为我的GUI线程分配较少量的资源? 如果其他线程的时钟时间不足,我可以使用Thread.Sleep以某种方式阻止Form事件吗? 如果没有我所有令人沮丧的问题的答案,是否有某种线程分析器可以用来帮助解决我的问题? 我尝试使用“托管堆栈资源管理器”,但不知何故,它并不总是显示我的应用程序有什么线程。 对此事的任何帮助都会对我有所帮助。

C#禁用USB ReadPipe的垃圾回收

我试图使用FTDI的D3XX.NET从USB端口收集数据。 收集数据,然后将其发送到快速傅立叶变换以绘制光谱。 即使您错过了一些数据,这也可以正常工作。 你不能说。 但是,如果您希望将此数据发送到音频输出组件,则会发现数据丢失。 这就是我的问题所在。 收集数据然后将其发送到音频设备。 所有数据包都在所需的时间范围内完成。 但是,音频正在丢弃它出现的数据。 这是一张正弦波在音频输出中的样子: 您可以看到一些数据在开始时丢失,并且似乎在结束时缺少整个周期。 这只是一个例子,它一直在变化。 有时似乎数据不存在。 我已经完成了整个处理链,我非常确定声音的数据包正在制作它。 我已经使用过JetBrains性能分析器。 我发现如下:ReadPipe方法需要8.5ms,这正是您期望读取的内容。 到现在为止还挺好。 ReadPipe命令完成后,您有0.5ms的时间来执行另一个ReadPipe,否则您将丢失一些数据。 查看分析器输出,我看到: ReadPipe需要8.5ms,然后有这个垃圾收集条目,平均需要1.6ms。 如果这确实偶尔发生,那么我丢失了一些数据。 所以这是代码:它是一个后台工作者: private void CollectData(object sender, DoWorkEventArgs e) { while (keepGoing) { ftStatus = d3xxDevice.ReadPipe(0x84, iqBuffer, 65536, ref bytesTransferred); //read IQ data – will get 1024 pairs – 2 bytes per value _waitForData.Set(); } } […]

C#Charting – 合理的大数据集和实时

我正在寻找一个C#WinForms图表组件,无论是商业还是开源,可以处理相对较大的数据集,并且在图表呈现和更新方面具有合理的可扩展性。 要显示的数据集的数量大约为30.每个数据集每秒将有15到20个更新。 为此需要折线图组件。

构建SignalR / Knockout仪表板,保证消息传递

我正在考虑使用实时消息替换我们公司的监控仪表板。 旧概念: 在我们公司,我们有一个仪表板,显示超过700台物理机器的(相当详细的)状态,以及添加的元信息。 它是由我的一位同事在ASP.NET Web Forms(我不喜欢)中大约1.5年前构建的,以使调度员能够协调我们的技术人员应该去解决问题的位置(这些机器位于不同的地理位置) )。 不幸的是,该应用程序使用30秒的完整页面自动刷新,后面有一个大查询。 它很慢,它完全重置你的视图(正如我所说,仪表板包含超过700多台机器)。 我个人想改变这个。 使用起来非常烦人。 我们的调度员已经学会了接受这一点,但我认为他们应该得到更好的待遇。 新概念: 我想在新仪表板上显示相同的内容,但需要实时更新和“消息”日志。 在我们公司,我们在MS堆栈上工作了大约90%,所以我计划使用ASP.NET MVC,SignalR,SQL Server和Knockout。 我现在有什么 看看这个简单的图表: +—-+ +—-+ +—-+ +—-+ +—-+ +—-+ +—-+ | PC | | PC | | PC | | PC | | PC | | PC | | PC | … … +–+-+ +–+-+ +-+–+ +–+-+ +–+-+ +–+-+ […]

如果在图表上添加数据,如何在图表上移动x轴网格

//网格线不会随着线点的变化而移动。 我应该添加什么代码才能使它看起来像cpu性能图表? Series test1 = new Series(); Series test2 = new Series(); private void Form1_Load(object sender, EventArgs e) { test1.Color = Color.Blue; test1.ChartType = SeriesChartType.FastLine; test1.BorderWidth = 2; test2.Color = Color.Red; test2.ChartType = SeriesChartType.FastLine; test2.BorderWidth = 2; chart1.Series.Add(test1); chart1.Series.Add(test2); chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = true; chart1.ChartAreas[0].AxisX.IsStartedFromZero = true; chart1.ChartAreas[0].AxisX.IntervalOffsetType = DateTimeIntervalType.Number; } private void timer1_Tick(object sender, EventArgs e) […]

显示当前时间WPF

我发现定期显示当前时间更新的唯一方法是使用计时器。 当然,我可以实现INotifyPropertyChanged和一些在UI上使用的特殊属性,但是这个实现AFAIK也需要Timer 。 比如像这里 。 有没有更好的方式来显示当前时间? 编辑 澄清一下:有没有任何声明性的方法让它在没有使用XAML语法的计时器的情况下实时工作? 没有什么能阻止我在这里使用计时器。 我只是想知道是否有更优雅和紧凑的方式来实现这一点。

C#实时尝试捕获

我想要一个真正在C#中进行实时编程或者真正了解语言内部的人的回复。 我知道exception不应该用于处理正常处理,而只是用于检测错误条件。 有关该主题的讨论很多。 我想知道是否有任何运行时间减慢,只需要一个try / catch块(除非程序必须以任何方式结束,否则永远不会捕获exception)。 try / catch块位于必须重复调用的函数内。 我怀疑只有最低成本。 是否可以根据CPU周期或其他任务(与浮点乘法相同的成本)或其他方式来量化成本? 我们在Windows XP下使用Microsoft C#.Net 3.5。

如何避免实时.NET应用程序中的垃圾收集?

我正在编写一个金融C#应用程序,它从网络接收消息,根据消息类型将它们转换为不同的对象,最后将应用程序业务逻辑应用于它们。 关键是在应用业务逻辑之后,我非常确定我将永远不再需要这个实例。 我不想等待垃圾收集器释放它们,而是明确地“删除”它们。 有没有更好的方法在C#中这样做,我应该使用一个对象池来重用总是同一组实例,还是有更好的策略。 目标是避免垃圾收集在时间关键过程中使用任何CPU。