Bonjour tout le monde,
j'aurais besoin d'aide sur l'architecture MVVM. J'ai trouvé beaucoup d'exemple et de tutoriel sur cette architecture, mais je n'ai pas trouvé une qui disait comment ouvrir un fichier, Excel dans mon cas.
En fait ce que je souhaite faire c'est lorsque l'utilisateur ouvre le .exe de mon programme, l'architecture charge lors de son ouverture, le contenu du fichier Excel, de préférence en background. Car je veux l'utiliser en lecture pour des recherches d'informations, et je ne dois pas modifier ou ajouter d'informations sur ce fichier.
Voici actuellement à quoi ressemble mon architecture.
ne vous souciez pas du fichier LangResource, il n'est pas dans la MVVM.
ExcelReader
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class ExcelReader { private DataTable feuille1; private static object lockObject = new object(); private static ExcelReader instance; public static ExcelReader Instance() { lock (lockObject) { if (instance == null) { instance = new ExcelReader(); } return instance; } } public static bool Init() { //lecture du fichier Excel return false; } }
Excel Service
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class ExcelService { private static object lockObject = new object(); private static ExcelService instance; private readonly IList<ExcelExchange> table = new List<ExcelExchange>(); private ExcelService() { } public static ExcelService Instance() { lock (lockObject) { if (instance == null) { instance = new ExcelService(); } return instance; } } public IList<ExcelExchange> GetAll() { lock (lockObject) { return table.ToList(); } } public void Init() { } public void Update() { lock (lockObject) { //Mise à jour d'un DataGrid } }
Worker
Cette initialisation peut-elle passer par le worker? Ou dois-je créer un thread spécifique pour la récupération du fichier?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class Worker : IDisposable { public bool IsAlive { get; set; } public bool Init() { bool res = ExcelReader.Init(); return false; } public void Execute() { Task.Factory.StartNew(() => { IsAlive = true; DoExecute(); }); } private void DoExecute() { while (IsAlive) { Task.Factory.StartNew( () => { //var rates = ExcelService.Instance().GetAll(); //var value = ExcelReader.Instance().Get(rate.Code); string r = ""; } ); Thread.Sleep(1000 * 5); } } public void Dispose() { IsAlive = false; } }
Je vous remercie.
Partager