Ansprechbaren Assistent
-
Dulli XXL schrieb:
LiGERWooD schrieb:
Also ich bin ja nicht ganz blöd
Doch, "soll" wird mit zwei "L" geschrieben, genauso "sollte".
14 Rechtschreibfehler und 8 Grammatikfehler.
Duden für Dummis kaufen...Aha, wenn du schlau werst dann wüstest du dass man Alles lernen kann, kommt nur drauf an wie gut, das hängt nämlich wieder von der inteligenz ab. Inteligenz ist immer Relativ. Und meistens nur für den schlecht beurteiler Relativ zu sich, demnach bist du genauso dumm wie ich
-
-
LiGERWooD schrieb:
...inteligenz ab. Inteligenz...
wieder ein "l" jeweils zu wenig...^^
aber egal
-
Ach leute wir sind hier nicht im Gericht, man schreibt eben nun mal schlampig, wenn man ständig schreiben muss. Auch wenn das eher vom chaten kommt
-
LiGERWooD schrieb:
Nur müsste dann die Fastkopie (vor Form inialisierung) die Übergabeparameter an das bereits gestartete Programm schicken, Oder? weil die Übergabeparameter hat ja nun mal die gestartete Kopie bekommen.
Wie geht dass?
Genau, du musst die Daten von dem einen Aufruf zum anderen übertragen. Dafür gibt es IPC (inter-process communication) oder du schreibst gleich ne Client/Server Anwendung und kannst das ganze sogar ohne Probleme von einem Rechner auf den anderen schicken.
-
Also das heißt jetzt wenn ich keine Client / Server Variante machen möchte, dass ich IpcClientChannel und IpcServerChannel in einem und dem selben Programm schreiben muss.
Und zwar so, dass wenn die erste Kopie festellt das sie die einzige ist, dass sie dann eine Instanz von IpcServerChannel erstellt und wenn die zweite Kopie festellt, das sie eine weitere Kopie ist, dass diese dann eine Instanz von IpcClientChannel erstellt. Oder?
Die zweite Kopie dann blos die Daten (Übergabeparameter) mit IpcClientChannel an die erste Kopie an IpcServerChannel schickt. Oder?
-
Kann unter Verweise Counter.dll nicht finden. ???
Was zu erwähnen wehre, dass bei mir Entity Framework fehlt, aber das hat damit nichts zu tun denke ich.
-
Oliver Michalski schrieb:
Hallo,
die Antwort steht auf der Seite. Counter.dll ist das Remoteobjekt und muß von Dir selbst erschaffen werden. Der Code dafür steht ebenfalls auf der Seite.
Schöne Grüße
OliverAchso. Natürlich. Habe das Rezept nur schnell überflogen. Liegt auch dadran, dass ClientChannel und ServerChannel in dem einen und dem selben Programm sein soll. Das hat mich irgendwie irritiert.
Damit bin ich ja aber schon wieder beim dem nächstem Problem. Bekommt man typeid nur von einer eingebundenen .dll? Dabei in betracht gezogen das mein Ausgabetyp .exe ist. Oder wo bekomme ich überall typeid her?
-
Wehre nett wenn ich noch mal eure Unterstützung bekäme. Die zwei Beispiele ipcClientChannel und ipcServerChannel verstehe ich nicht ganz, zumindest die Logik nicht, was da denn nun übergeben wurde.
In beidem (Client und Server) wird die selbe .dll eingebunden, soll dass die Austausch-Ablage sein? Komisch nur dass dann bei Client eine Instanz der Klasse aus der .dll erzeugt wird mehr nicht. Und ich kann bei Server nirgends sehen dass da irgendwie die .dll verändert wird. Was wurde denn nun da letztendlich vom Server zum Clienten übergeben?
Und wie merkt dann der Client einen Anruf vom Server? Ich konnte unter Member kein Event dafür finden.
??? Dieses Rezept der msdn hat mich echt zum grübeln gebracht.
-
Nun denn bin doch noch drauf gekommen, habe aber noch ein Problem:
Eine nicht behandelte Ausnahme des Typs "System.Runtime.Remoting.RemotingException" ist in mscorlib.dll aufgetreten. Zusätzliche Informationen: Ein nicht standardmäßiger Konstruktor kann nicht ausgeführt werden, wenn die Verbindung mit bekannten Objekten hergestellt wird.
common.h
using namespace System; // Remote object. public ref class RemoteObject : public MarshalByRefObject { String ^Z; public: RemoteObject(String ^Z); private: static int callCount = 0; public: int GetCount() { Console::WriteLine( L"GetCount has been called." ); Console::WriteLine(Z); callCount++; return (callCount); } };
common.cpp
// Dies ist die Haupt-DLL. #include "Stdafx.h" #include "common.h" RemoteObject::RemoteObject(String ^Z) { this->Z = Z; }
Client.cpp
include "Stdafx.h" using namespace System; using namespace System::Runtime::Remoting::Channels::Ipc; void main() { // Create the channel. IpcChannel^ channel = gcnew IpcChannel; // Register the channel. System::Runtime::Remoting::Channels::ChannelServices::RegisterChannel(channel); // Register as client for remote object. System::Runtime::Remoting::WellKnownClientTypeEntry^ remoteType = gcnew System::Runtime::Remoting::WellKnownClientTypeEntry( RemoteObject::typeid,L"ipc://localhost:9090/RemoteObject.rem" ); System::Runtime::Remoting::RemotingConfiguration::RegisterWellKnownClientType(remoteType); // Create a message sink. String^ objectUri; System::Runtime::Remoting::Messaging::IMessageSink^ messageSink = channel->CreateMessageSink( L"ipc://localhost:9090/RemoteObject.rem", nullptr, objectUri ); Console::WriteLine( L"The URI of the message sink is {0}.", objectUri ); if ( messageSink != nullptr ) { Console::WriteLine( L"The type of the message sink is {0}.", messageSink->GetType() ); } // Create an instance of the remote object. RemoteObject ^service = gcnew RemoteObject(10); // Invoke a method on the remote object. Console::WriteLine( L"The client is invoking the remote object." ); Console::WriteLine( L"The remote object has been called {0} times.", service->GetCount() ); }