프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / ConvertService / ServiceBase / Markus.Service.StationController / ViewModel / DataBaseByStatusViewModel.cs @ 6f6e7dbf

이력 | 보기 | 이력해설 | 다운로드 (3.45 KB)

1
using Markus.Service.StationController.StationService;
2
using System;
3
using System.Collections.Generic;
4
using System.ComponentModel;
5
using System.Linq;
6
using System.Text;
7
using System.Threading.Tasks;
8
using Markus.Service.Extensions;
9
using Markus.Message;
10

    
11
namespace Markus.Service.StationController.ViewModel
12
{
13
    public class DataBaseByStatusViewModel : Mvvm.ToolKit.ViewModelBase
14
    {
15
        BackgroundWorker backgroundWorker;
16

    
17
        private List<StationService.ConvertItem> items;
18
        private StatusCodeType statusType;
19
        private bool isLoading;
20

    
21
        public List<ConvertItem> Items
22
        {
23
            get => items; set
24
            {
25
                items = value;
26
                OnPropertyChanged(() => Items);
27
            }
28
        }
29

    
30
      
31
        public StatusCodeType StatusType
32
        {
33
            get => statusType; set
34
            {
35
                statusType = value;
36
                OnPropertyChanged(() => StatusType);
37
            }
38
        }
39

    
40
        public bool IsLoading
41
        {
42
            get => isLoading; set
43
            {
44
                if (isLoading != value)
45
                {
46
                    isLoading = value;
47
                    OnPropertyChanged(() => IsLoading);
48
                }
49
            }
50
        }
51

    
52
        public DataBaseByStatusViewModel()
53
        {
54
        }
55

    
56
        // 진행률에 변화가 있을때 이벤트가 발생
57
        private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
58
        {
59
        }
60

    
61
        // 일이 모두 마쳤을때 수행되어야할 코드
62
        private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
63
        {
64
        }
65

    
66
        // BackgroundWorker에서 수행할 일을 정의.
67
        private async void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
68
        {
69
            while (IsAcitve)
70
            {
71
                System.Threading.Thread.Sleep(1000);
72

    
73
                try
74
                {
75
                    IsLoading = true;
76

    
77
                    List<ConvertItem> newitems = new List<ConvertItem>();
78

    
79
                    foreach (var client in App.StationClientList)
80
                    {
81
                        var items = await client.AliveConvertListAsync();
82

    
83
                        newitems.AddRange(items);
84
                    }
85

    
86
                  newitems.Update(Items);
87

    
88
                    Items = newitems;
89

    
90
                }
91
                catch (Exception ex)
92
                {
93
                }
94
            }
95
            
96
        }
97

    
98
        public override void Loaded()
99
        {
100
            base.Loaded();
101

    
102
            backgroundWorker = new BackgroundWorker();
103
            backgroundWorker.DoWork += backgroundWorker_DoWork;
104
            backgroundWorker.RunWorkerCompleted += backgroundWorker_RunWorkerCompleted;
105
            backgroundWorker.WorkerReportsProgress = false;
106
            backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker_ProgressChanged);
107

    
108
            backgroundWorker.RunWorkerAsync();
109
        }
110

    
111
        public override void Closed()
112
        {
113
            backgroundWorker.DoWork -= backgroundWorker_DoWork;
114
            backgroundWorker.RunWorkerCompleted -= backgroundWorker_RunWorkerCompleted;
115
            backgroundWorker.WorkerReportsProgress = false;
116
            backgroundWorker.ProgressChanged -= new ProgressChangedEventHandler(backgroundWorker_ProgressChanged);
117

    
118
            backgroundWorker.Dispose();
119

    
120
            base.Closed();
121
        }
122
    }
123
}
클립보드 이미지 추가 (최대 크기: 500 MB)