Graag wil ik indien een event een event opgegooid wordt mbt een callback alle clients op de hoogte brengen van de update.
Eerst een interface, zodat ik op de client niet met meta data moet gaan lopen klooien:
Dan de implentatie....dit object wordt gehost middels een server applicatie, verder niet relevant voor het probleem:
Dan komen de problemen! Na op de client ook een remoting laag ingebouwd te hebben zou ik graag zodra in mijn remote object een event opgegooid wordt, de clients die hierdoor bediend worden reageren door bv de interface van een refresh te voorzien.
Maar nu kan ik dus niet de Delegate aan zodat een callback mogelijk is?!? Hoe zou ik bovenstaande "moeten" realiseren. Naar mijn weten kan ik in een interface geen delegate meenemen, maar ergens zit dus mijn denkfout, iemand?
Eerst een interface, zodat ik op de client niet met meta data moet gaan lopen klooien:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| namespace IRemoteObjects
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public delegate void QuestionChangedHandler();
public interface IQuestionManager
{
string GetPendingQuestion();
void SubmitNewQuestion(string strQuestion);
event QuestionChangedHandler QuestionChangedEvent;
}
} |
Dan de implentatie....dit object wordt gehost middels een server applicatie, verder niet relevant voor het probleem:
code:
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
| using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using IRemoteObjects;
namespace RemoteObjects
{
/// <summary>
/// Summary description for Class1.
/// </summary>
//public delegate void QuestionChangedHandler();
public class QuestionManager : MarshalByRefObject, IQuestionManager
{
private string _question;
public event QuestionChangedHandler QuestionChangedEvent;
public QuestionManager()
{
_question = "Undefined";
}
public QuestionManager(string strQuestion)
{
_question = strQuestion;
}
public string GetPendingQuestion()
{
return _question;
}
public void SubmitNewQuestion(string strQuestion)
{
_question = strQuestion;
this.QuestionChangedEvent();
}
}
} |
Dan komen de problemen! Na op de client ook een remoting laag ingebouwd te hebben zou ik graag zodra in mijn remote object een event opgegooid wordt, de clients die hierdoor bediend worden reageren door bv de interface van een refresh te voorzien.
code:
1
| m_RemoteObject.QuestionChangedEvent += new m_RemoteObject.QuestionChangedHandler(this.OnQuestionChanged); |
Maar nu kan ik dus niet de Delegate aan zodat een callback mogelijk is?!? Hoe zou ik bovenstaande "moeten" realiseren. Naar mijn weten kan ik in een interface geen delegate meenemen, maar ergens zit dus mijn denkfout, iemand?