Bonjour,
je possède une classe Acquisition dans laquelle une opération asynchrone est effectuée.
Cette classe a pour rôle de lire des données dans une carte d'acquisition.
Cette classe fait parti d'une couche métier.
Les données lues doivent être affichés sur des graphes placés sur une Window Form.
Initialement j'avais défini dans ma classe Acquisition deux graphes. Dans le constructeur, j'initialisais les deux graphes avec les références passées en paramètre du constructeur.
Les données sont lues par une opération asynchrone.
Lorsque l'opération asynchrone est terminée, les données sont lues et affichées sur les graphes.
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part m_Reader.BeginReadMultiSample(m_AcquiParametre.SamplesPerChannel, new AsyncCallback(ReadCallBack), null);
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part ReadCallBack(IAsyncResult ar)
Code c# : 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
44
45
46 /// <summary> /// /// </summary> public void ReadMultiData() { if (m_TaskRunning) { try { // begin an asynchronous analog input operation m_Reader.BeginReadMultiSample, m_AcquiParametre.SamplesPerChannel, new AsyncCallback(ReadCallBack), null); } catch (DaqException ex) {} } } /// <summary> /// /// </summary> /// <param name="ar"></param> private void ReadCallBack(IAsyncResult ar) { if (m_TaskRunning) { try { //get the data acquired from the asynchronous operation Double[,] data = m_Reader.EndReadMultiSample(ar); if (m_GraphMesBrut != null) m_GraphMesBrut.ChartY(data); if (m_GraphMesScale != null) m_GraphMesScale.ChartY(data); m_Reader.BeginReadMultiSample(1000, new AsyncCallback (ReadCallBack), null); } catch (DaqException ex) {} } }
Mais cette classe Acquisition devient dépendantes des deux graphes.
Ce qui est embêtant, vous êtes d'accord n'est ce pas ?
Si vous êtes d'accord, j'aimerais supprimer ces deux graphes. Et du coup, j'amerais retourner les données lues c'est à dire le tableau double[,] à la classe appelante de la méthode ReadMultiData().
Mais comment faire pour retourner des données depuis une méthode tel que ReadCallback ?
J'espère avoir été clair.
En fait,
j'aimerais savoir comment retourner des données depuis une méthode IAsyncResult ?
Merci.
Partager