SampleSmart 1.0.0.0
SampleSmart 사용 방법을 보여 주는 예제 프로젝트입니다.
로딩중...
검색중...
일치하는것 없음
MainWindow.xaml.ViewModel.cs
이 파일의 문서화 페이지로 가기
1using Dreamine.Logging.Interfaces;
2using Dreamine.MVVM.Attributes;
3using Dreamine.MVVM.Core;
4using Dreamine.MVVM.ViewModels;
5using Dreamine.Threading.Interfaces;
6using Dreamine.Threading.Models;
7
8namespace SampleSmart.Pages
9{
18 public partial class MainWindowViewModel : ViewModelBase
19 {
28 [DreamineModel]
38 [DreamineEvent]
48 public string Title => Model.Title;
57 public string Message => Model.Message;
66 [DreamineCommand("Event.Ok")]
67 private partial void Ok();
68
77 [DreamineCommand("Event.Cancel")]
78 private partial void Cancel();
79
88 [DreamineCommand("Event.Minimize")]
89 private partial void Minimize();
90
99 [DreamineCommand("Event.Maximize")]
100 private partial void Maximize();
101
110 [DreamineCommand("Event.Close")]
111 private partial void Close();
112
121 [DreamineCommand("Event.SubPage")]
122 private partial void SubPage();
123
132 [DreamineCommand("Event.SubPage2")]
133 private partial void SubPage2();
134
143 [DreamineCommand("Event.LogPage")]
144 private partial void LogPage();
145
154 [DreamineCommand("Event.ThreadPage")]
155 private partial void ThreadPage();
156
165 [DreamineCommand("Event.CommunicationPage")]
166 private partial void CommunicationPage();
167
176 [DreamineCommand("Event.PlcPage")]
177 private partial void PlcPage();
178
187 [DreamineCommand("Event.IoPage")]
188 private partial void IoPage();
189
198 [DreamineCommand("Event.DatabasePage")]
199 private partial void DatabasePage();
200
209 [DreamineCommand("Event.SubWindow")]
210 private partial void SubWindow();
211
220 [DreamineCommand("Event.NoticeWindow")]
221 private partial void NoticeWindow();
222
231 [DreamineCommand("Event.MonitorWindow")]
232 private partial void MonitorWindow();
233
242 [DreamineCommand("Event.SettingWindow")]
243 private partial void SettingWindow();
244
253 private const string SampleMonitoringJobName = "Sample-MonitoringJob";
254
263 private readonly IDreamineLogger _logger;
272 private readonly IDreamineThreadManager _threadManager;
273
282 private bool _isInitialized;
301
326 public MainWindowViewModel(IDreamineLogger logger, IDreamineThreadManager threadManager)
327 {
328 _model = null!;
329 _event = null!;
330 _ = _model;
331 _ = _event;
332
333 _logger = logger;
334 _threadManager = threadManager;
335
336 Initialize();
337 }
338
347 public void Initialize()
348 {
349 if (_isInitialized)
350 {
351 return;
352 }
353
354 _isInitialized = true;
355
357 }
358
368 {
370 {
371 _logger.Warning($"{SampleMonitoringJobName} is already registered.");
372 return;
373 }
374
376
377 _threadManager.Register(
378 new DreamineThreadOptions
379 {
381 Priority = DreamineThreadPriority.Normal,
382 IntervalMs = 10,
383 CoreMode = DreamineThreadCoreMode.Auto,
384 AutoThreadsPerCore = 2,
385 OverflowPollingIntervalMs = 20,
386 AutoStart = true,
387 UseHighPrecisionTimer = true,
388 YieldWhenIntervalIsZero = true,
389 UseAdaptiveCpuDelay = true
390 },
392
393 _logger.Info($"{SampleMonitoringJobName} registered from MainWindowViewModel.");
394 }
395
420 private ValueTask ExecuteSampleMonitoringJobAsync(CancellationToken token)
421 {
422 if (token.IsCancellationRequested)
423 {
424 return ValueTask.CompletedTask;
425 }
426
428
429 if (_sampleMonitoringTickCount % 100 == 0)
430 {
431 _logger.Debug(
432 $"Sample monitoring thread tick. Count={_sampleMonitoringTickCount}");
433 }
434
435 return ValueTask.CompletedTask;
436 }
437 }
438}
readonly IDreamineThreadManager _threadManager
ValueTask ExecuteSampleMonitoringJobAsync(CancellationToken token)
MainWindowViewModel(IDreamineLogger logger, IDreamineThreadManager threadManager)