WinForms/SpeedTest/SpeedTestVm.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using LiveCharts.Geared;
namespace Geared.Winforms.SpeedTest
{
public class SpeedTestVm
{
private double _trend;
public SpeedTestVm()
{
Values = new GearedValues<double>().WithQuality(Quality.High);
}
public bool IsReading { get; set; }
public GearedValues<double> Values { get; set; }
public double Count { get; set; }
public double CurrentLecture { get; set; }
public bool IsHot { get; set; }
public void Stop()
{
IsReading = false;
}
public void Clear()
{
Values.Clear();
}
public void Read()
{
if (IsReading) return;
//lets keep in memory only the last 20000 records,
//to keep everything running faster
const int keepRecords = 20000;
IsReading = true;
Action readFromTread = () =>
{
while (IsReading)
{
Thread.Sleep(1);
var r = new Random();
_trend += (r.NextDouble() < 0.5 ? 1 : -1) * r.Next(0, 10)*.001;
//when multi threading avoid indexed calls like -> Values[0]
//instead enumerate the collection
//ChartValues/GearedValues returns a thread safe copy once you enumerate it.
//TIPS: use foreach instead of for
//LINQ methods also enumerate the collections
var first = Values.DefaultIfEmpty(0).FirstOrDefault();
if (Values.Count > keepRecords - 1) Values.Remove(first);
if (Values.Count < keepRecords) Values.Add(_trend);
IsHot = _trend > 0;
Count = Values.Count;
CurrentLecture = _trend;
后面还有 16 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
