c# 将一个长耗时任务改成task
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | public Task<ObservableCollection<WaterFallDataSource2>> InitalrenderSourceandBrush2( int width) { Stopwatch w = new Stopwatch(); w.Start(); points3.Clear(); int wavelength = GlobalStorage.BigWaves.Length; int allRows = wavelength / width; w.Stop(); Debug.WriteLine( "w.ElapsedMilliseconds:" + w.ElapsedMilliseconds); Debug.WriteLine( "allRows:" + allRows); if (allRows > 0) { Parallel.For(0, _pagesize, (lk) => { ObservableCollection<DataPoint3> dataPoints = new ObservableCollection<DataPoint3>(); for ( byte j = 0; j < 150; j++) { for ( short i = 0; i < width; i++) { DataPoint3 dataPoint = new DataPoint3() { VariableX = i, VariableY = j }; dataPoint.Type = GetColorIndex2(GlobalStorage.BigWaves[lk * width + i][j]); dataPoints.Add(dataPoint); } } WaterFallDataSource2 waterFallDataSource = new WaterFallDataSource2(); waterFallDataSource.DataPoints = dataPoints; waterFallDataSource.BrushInfo = brushes; waterFallDataSource.Index = lk; waterFallDataSource.Width = width; waterFallDataSource.StartTime = BeatWaveDataConversionExtension.WaveDotToDateTime(BeatInfoCache.BeatInfos.ElementAt(lk * width).R).ToString(); points3.Add(waterFallDataSource); }); return Task.FromResult<ObservableCollection<WaterFallDataSource2>>(points3.OrderBy(p => p.Index).ToObservableCollection<WaterFallDataSource2>()); } else { ObservableCollection<DataPoint3> dataPoints = new ObservableCollection<DataPoint3>(); WaterFallDataSource2 waterFallDataSource = new WaterFallDataSource2(); for ( byte j = 0; j < 150; j++) { for ( short i = 0; i < wavelength; i++) { short value = GlobalStorage.BigWaves[i][j]; DataPoint3 dataPoint = new DataPoint3() { VariableX = i, VariableY = j }; dataPoint.Type = GetColorIndex2(value); dataPoints.Add(dataPoint); } } waterFallDataSource.DataPoints = dataPoints; waterFallDataSource.BrushInfo = brushes; waterFallDataSource.Index = 0; waterFallDataSource.Width = width; points3.Add(waterFallDataSource); return Task.FromResult<ObservableCollection<WaterFallDataSource2>>(points3); } } |
调用
var reuslt = await _stTrendController.InitalrenderSourceandBrush2((int)firstrowgrid.ActualWidth - 27);
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步