Hallo zusammen,
ich habe eine RPC - Schnittstelle für eine IPC (inter process communication) erstellt.
Dazu habe ich eine RPC Server und einen RPC Client erstellt.
Der Server sendet an den Client einen Text. Ganz einfach.
Das funktioniert auch.
Die Methode "ReceiveMessage" ist eine Auszug aus dem RPC Client.
Beim Erhalt einer Message (Text) möchte ich diesen in einer Textbox in einem Dialog ausgeben.
Die Klasse in dem die Methode "ReceiveMessage" sitzt besitzt eine Instanz der Dialogklasse in dem der Text ausgegeben werden soll.
Alles noch gut.
Aber beim Schreiben auf die Textbox wird das Programm nicht weiter ausgeführt.
Das Schreiben auf die Textbox erfolgt nicht direkt, sondern über eine Methode ".ShowReceiveData(string Message);
Die Aktion führt nicht zu einem Absturz, es scheint irgendwie blockiert zu sein.
Hier der Auszug des RPC Clients:
Das interface "IRpcClientInfo" stammt aus einer DLL.
Hier die Methode in der auf die Textbox zugegriffen wird:
Der Debugger führt mich bis an die Stelle auf der auf die Textbox geschrieben wird.
tbReceiveMsg.Text = strMsg;
Dann steigt der Debugger aus.
Gibt es in C# so etwas wie C++ wie "SENDMESSAGE("Text");
Vielen Dank.
Grüße von CopWorker
ich habe eine RPC - Schnittstelle für eine IPC (inter process communication) erstellt.
Dazu habe ich eine RPC Server und einen RPC Client erstellt.
Der Server sendet an den Client einen Text. Ganz einfach.
Das funktioniert auch.
Die Methode "ReceiveMessage" ist eine Auszug aus dem RPC Client.
Beim Erhalt einer Message (Text) möchte ich diesen in einer Textbox in einem Dialog ausgeben.
Die Klasse in dem die Methode "ReceiveMessage" sitzt besitzt eine Instanz der Dialogklasse in dem der Text ausgegeben werden soll.
Alles noch gut.
Aber beim Schreiben auf die Textbox wird das Programm nicht weiter ausgeführt.
Das Schreiben auf die Textbox erfolgt nicht direkt, sondern über eine Methode ".ShowReceiveData(string Message);
Die Aktion führt nicht zu einem Absturz, es scheint irgendwie blockiert zu sein.
Hier der Auszug des RPC Clients:
C#:
public int ReceiveMessage(ref string strMsg)
{
int iRet = 0;
string strMessage = string.Empty;
//When a call comes, do the following:
server.OnExecute += delegate (IRpcClientInfo iclient, byte[] arg)
{
strMessage = str.ByteArrayToString(arg);
using (iclient.Impersonate())
{
//Eingehende Meldungen auf Oberfläche
//clParent.ShowReceivedData(strMessage);
return new byte[0];
}
};
return iRet;
}
Hier die Methode in der auf die Textbox zugegriffen wird:
C#:
public bool ShowReceivedData(string strMsg)
{
bool BRet = false;
tbReceiveMsg.Text = strMsg;
Application.DoEvents();
return BRet;
}
tbReceiveMsg.Text = strMsg;
Dann steigt der Debugger aus.
Gibt es in C# so etwas wie C++ wie "SENDMESSAGE("Text");
Vielen Dank.
Grüße von CopWorker