51 lines
1.9 KiB
C#
51 lines
1.9 KiB
C#
using DeviceCommand.Base;
|
||
using MaterialDesignThemes.Wpf;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Collections.ObjectModel;
|
||
using System.Diagnostics;
|
||
using System.Linq;
|
||
using System.Reflection;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows.Media;
|
||
using UIShare.UIViewModel;
|
||
|
||
namespace UIShare.GlobalVariable
|
||
{
|
||
public class ScopedContext
|
||
{
|
||
private static readonly Random _randomSeed = new Random();
|
||
public ProgramVM Program { get; set; } = new();
|
||
public String SelectedStepList { get; set; } = "主程序";
|
||
public string CurrentFilePath { get; set; }
|
||
public bool? IsStop { get; set; }
|
||
public bool SingleStep { get; set; }
|
||
public string RunState { get; set; } = "运行";
|
||
public TimeSpan RunningTime { get; set; } = TimeSpan.Zero;
|
||
public Stopwatch SW { get; set; } = new();
|
||
public bool IsTerminate { get; set; } = false;
|
||
public ObservableCollection<Assembly> Assemblies { get; set; } = new();
|
||
public PackIconKind RunIcon { get; set; } = PackIconKind.Play;
|
||
public StepVM SelectedStep { get; set; }
|
||
public ParameterVM SelectedParameter { get; set; }
|
||
|
||
public List<IBaseInterface> DeviceList { get; set; } = new();
|
||
|
||
/// <summary>当前作用域的日志接收器,LogAreaViewModel 订阅此处实现按作用域隔离日志。</summary>
|
||
public IProgress<(string Message, Brush Color, int Depth)>? LogProgress { get; set; }
|
||
|
||
// 【新增测试属性】:每个实例被 new 出来时独一无二的随机身份
|
||
// 证 ID
|
||
public int DebugRandomId { get; private set; }
|
||
public ScopedContext()
|
||
{
|
||
lock (_randomSeed)
|
||
{
|
||
// 每次诞生一个新上下文,就在 10000 到 99999 之间随机摇一个数
|
||
DebugRandomId = _randomSeed.Next(10000, 100000);
|
||
}
|
||
}
|
||
}
|
||
}
|