fix: 进度条调整

master
tongg 7 months ago
parent 331dbaf6e2
commit dd52d47f3d
  1. 1
      Language/zh_CN.xaml
  2. 146
      ViewModel/Grading/DiamondSelectVM.cs
  3. 18
      ViewModel/Grading/GradingResultVM.cs
  4. 2
      Views/Dialog/ExportDialog.xaml
  5. 3
      Views/UserControl/ViewportData/Helper/VideoHelper.cs

@ -77,6 +77,7 @@
<sys:String x:Key="异形钻">异形钻</sys:String> <sys:String x:Key="异形钻">异形钻</sys:String>
<!-- loading --> <!-- loading -->
<sys:String x:Key="wait">正在检测,请等待...</sys:String> <sys:String x:Key="wait">正在检测,请等待...</sys:String>
<sys:String x:Key="waitExport">正在生成文件,请稍等...</sys:String>
<!--检测结果 报表--> <!--检测结果 报表-->
<sys:String x:Key="Avg">平均</sys:String> <sys:String x:Key="Avg">平均</sys:String>

@ -115,84 +115,88 @@ public class DiamondSelectVM : BaseViewModel
/// <param name="param"></param> /// <param name="param"></param>
public async void StartGrading(object param) public async void StartGrading(object param)
{ {
#if DEBUG
DoStartGrading(param); DoStartGrading(param);
//LoadingDialog loading = new LoadingDialog(); #else
//try LoadingDialog loading = new LoadingDialog();
//{ try
// if (param != null) {
// { if (param != null)
// var progressTask = Task.Run(() => Application.Current.Dispatcher.Invoke(() => loading.ShowDialog())); {
// await Task.Run(async () => var progressTask = Task.Run(() => Application.Current.Dispatcher.Invoke(() => loading.ShowDialog()));
// { await Task.Run(async () =>
// bool isEnd = false; {
// int progress = 0; bool isEnd = false;
// // 更新进度条的值(需要在UI线程上执行) int progress = 0;
// loading.Dispatcher.Invoke(async () => // 更新进度条的值(需要在UI线程上执行)
// { loading.Dispatcher.Invoke(async () =>
// for (int i = 0; i <= 97; i++) {
// { for (int i = 0; i <= 97; i++)
// if (isEnd) {
// { if (isEnd)
// break; {
// } break;
// // 模拟耗时操作 }
// //System.Threading.Thread.Sleep(50); // 休眠50毫秒 // 模拟耗时操作
// await Task.Delay(1000); //System.Threading.Thread.Sleep(50); // 休眠50毫秒
// loading.setValue(i); await Task.Delay(400);
// progress = i; loading.setValue(i);
// } progress = i;
// }); }
});
// SocResultEntity socResolt = new SocResultEntity(); SocResultEntity socResolt = new SocResultEntity();
// AlgorithmResultEntity parameter = new AlgorithmResultEntity(); AlgorithmResultEntity parameter = new AlgorithmResultEntity();
// parameter.Standard = "IGI 2024"; parameter.Standard = "IGI 2024";
// string value = param.ToString() ?? ""; string value = param.ToString() ?? "";
// if (value != null && value.Split(" ").Length == 3) if (value != null && value.Split(" ").Length == 3)
// { {
// parameter.Shape = value.Split(" ")[0]; parameter.Shape = value.Split(" ")[0];
// parameter.CrownType = value.Split(" ")[1]; parameter.CrownType = value.Split(" ")[1];
// parameter.PavType = value.Split(" ")[2]; parameter.PavType = value.Split(" ")[2];
// } }
// // 启动soc // 启动soc
// socResolt = await DoSoc(); socResolt = await DoSoc();
// // 启动算法 // 启动算法
// parameter = await DoAlgorithm(socResolt, parameter.Shape, parameter.CrownType); parameter = await DoAlgorithm(socResolt, parameter.Shape, parameter.CrownType);
// parameter.Standard = "IGI 2024"; parameter.Standard = "IGI 2024";
// parameter.Shape = value.Split(" ")[0]; parameter.Shape = value.Split(" ")[0];
// parameter.CrownType = value.Split(" ")[1]; parameter.CrownType = value.Split(" ")[1];
// parameter.PavType = value.Split(" ")[2]; parameter.PavType = value.Split(" ")[2];
// parameter.DiamondCode = DiamondCode; parameter.DiamondCode = DiamondCode;
// isEnd = true; isEnd = true;
// //GradingResult(parameter);
// await loading.Dispatcher.Invoke(async () =>
// {
// for (int i = progress; progress <= 100; i++)
// {
// Random random = new Random(); int minValue = 50; int maxValue = 150; // 生成50到150之间的随机整数
// int randomNumber = random.Next(minValue, maxValue + 1);
// await Task.Delay(randomNumber);
// loading.setValue(i);
// if (loading.ProgressBar.Value == 98)
// {
//GradingResult(parameter); //GradingResult(parameter);
// } await loading.Dispatcher.Invoke(async () =>
// if(loading.ProgressBar.Value >= 100) {
// { for (int i = progress; progress <= 100; i++)
{
Random random = new Random(); int minValue = 20; int maxValue = 100; // 生成50到150之间的随机整数
int randomNumber = random.Next(minValue, maxValue + 1);
await Task.Delay(randomNumber);
loading.setValue(i);
if (loading.ProgressBar.Value == 98)
{
GradingResult(parameter);
}
if(loading.ProgressBar.Value >= 100)
{
// loading.Close(); loading.Close();
// break; break;
// } }
// } }
// }); });
// }); });
// } }
//} }
//finally { finally {
}
#endif
//}
} }
/// <summary> /// <summary>
/// 开始检测(对soc和算法开始通讯) /// 开始检测(对soc和算法开始通讯)

@ -577,11 +577,11 @@ public class GradingResultVM : BaseViewModel
{ {
ExportDialog exportDialog = new ExportDialog(); ExportDialog exportDialog = new ExportDialog();
var tcs = new TaskCompletionSource<bool>(); var tcs = new TaskCompletionSource<bool>();
//var progressTask = Task.Run(() => Application.Current.Dispatcher.Invoke(() => { var progressTask = Task.Run(() => Application.Current.Dispatcher.Invoke(() => {
// exportDialog.Closed += (s, e) => tcs.SetResult(true); exportDialog.Closed += (s, e) => tcs.SetResult(true);
// exportDialog.ShowDialog(); exportDialog.ShowDialog();
//} }
// )); ));
await Task.Run(async () => await Task.Run(async () =>
{ {
@ -615,10 +615,10 @@ public class GradingResultVM : BaseViewModel
exportDialog.setValue("Success"); exportDialog.setValue("Success");
}); });
//DataConver(filePath); //DataConver(filePath);
//exportDialog.Dispatcher.Invoke(() => exportDialog.Dispatcher.Invoke(() =>
//{ {
// exportDialog.setValue("5/5"); exportDialog.setValue("5/5");
//}); });
}); });
await Task.Delay(500); await Task.Delay(500);
exportDialog.Close(); exportDialog.Close();

@ -18,7 +18,7 @@
<RowDefinition/> <RowDefinition/>
<RowDefinition/> <RowDefinition/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<TextBlock Grid.Row="1" Text="{DynamicResource wait}" FontFamily="PingFangSC-bold" FontSize="36" VerticalAlignment="Center" Background="Transparent" HorizontalAlignment="Center" Foreground="#FFFFFF"/> <TextBlock Grid.Row="1" Text="{DynamicResource waitExport}" FontFamily="PingFangSC-bold" FontSize="36" VerticalAlignment="Center" Background="Transparent" HorizontalAlignment="Center" Foreground="#FFFFFF"/>
<hc:CircleProgressBar x:Name="ProgressBar" IsIndeterminate="True" Grid.Row="2" /> <hc:CircleProgressBar x:Name="ProgressBar" IsIndeterminate="True" Grid.Row="2" />
<TextBlock Grid.Row="3" x:Name="Value" Text="准备开始" HorizontalAlignment="Center" Foreground="#FFFFFF"/> <TextBlock Grid.Row="3" x:Name="Value" Text="准备开始" HorizontalAlignment="Center" Foreground="#FFFFFF"/>
</Grid> </Grid>

@ -102,7 +102,8 @@ public class VideoHelper
string ffmpegPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ffmpeg.exe"); // Assuming ffmpeg.exe is in the same directory as the application string ffmpegPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ffmpeg.exe"); // Assuming ffmpeg.exe is in the same directory as the application
if (!File.Exists(ffmpegPath)) if (!File.Exists(ffmpegPath))
{ {
throw new FileNotFoundException("FFmpeg executable not found.", ffmpegPath); // throw new FileNotFoundException("", ffmpegPath);
MessageBox.Show("FFmpeg executable not found.", ffmpegPath);
} }
string framePattern = Path.Combine(tempDirectory, "frame_%05d.png").Replace("\\", "/"); // Replace backslashes with forward slashes for FFmpeg compatibility string framePattern = Path.Combine(tempDirectory, "frame_%05d.png").Replace("\\", "/"); // Replace backslashes with forward slashes for FFmpeg compatibility

Loading…
Cancel
Save