Laden...
Avatar #avatar-2386.jpg
Benutzerbeschreibung

Forenbeiträge von Rumpel Ingesamt 40 Beiträge

11.12.2008 - 10:03 Uhr

Auch bei mir gibt es besagtes Problem - es gab doch mal einen anderen Thread von dir, wo darüber diskutiert wurde - kam da was dabei heraus?

28.08.2008 - 07:27 Uhr

Vielleicht bist du mit

SelectedIndexChanged

besser dran.

ItemSelectionChanged feuert zwei mal da ein Item abgewählt und ein anderes angewählt wird. Eventuell könntest du überprüfen ob das zurückgelieferte Item tatsächlich einem neuen Ausgewähltem entspricht und nur dann deine Combobox ändern.

28.08.2008 - 07:16 Uhr

Vielleicht beherrscht das Modem kein Autobauding oder ist fix auf eine ander Baudrate eingestellt.

Oder kann es sein dass der AT+CPIN Befehl den Fehler ausgibt (Eventuell kein GSM-Modem dran?)?

12.06.2008 - 12:05 Uhr

Ich hatte selber vor einiger Zeit das selbe Problem - damals hab ich die Routinen aus DevCon übernommen und eine Wrapper-Lib für die nativen Aufrufe gemacht. Hat auch funktioniert, war halt kein reines C# mehr.

Über WMI funktioniert das meines wissens nicht, hatte ich damals auch schon versucht.

Edit:
Hab noch das Projekt angehängt. Ist halt wirklich wild, hoffentlich kennst dich aus. War einer meiner ersten Gehversuche 😉

08.05.2008 - 12:17 Uhr

Über den Resize-Event & Windowstate kannst du auf das Minimieren reagieren und dann einfach die Text-Eigenschaft ändern.

27.04.2008 - 20:00 Uhr

Verwende es, wenn ich etwas lustig finde, aber nicht lustig genug für 😁 oder xD
Also so zwischen schmunzeln und lustig

Ja, ich auch, hatte es eigentlich noch nie mit Ironie in Verbindung gebracht.

11.03.2008 - 11:06 Uhr

Das verwundert mich jetzt ein wenig. Wenn ich die Klasse verwende kann ich doch mit einer IndexOutOfRangeEx nichts anfangen, ich weiss ja nicht wie die Klasse implementiert wurde? Schliesslich greif ich ja nicht mit einem Indexer drauf zu...

Eine ArgumentOutOfRangeEx ist da doch viel deutlicher und weist mich auf meinen Fehler hin.

Sehe ich das jetzt falsch?

08.02.2008 - 20:24 Uhr

Hab zwar bisher noch nicht mit dem XPathNavigator gearbeitet, aber laut msdn sollte es eine MEthode "GetAttribute" geben. Die sollte eigentlich gehen.

XPathNavigator.GetAttribute Method

public virtual string GetAttribute(
string localName,
string namespaceURI
)

07.02.2008 - 09:42 Uhr

Und wie sind die ersten Erfahrungen?

03.01.2008 - 12:44 Uhr

Mal ernst, Fachbegriffe sollte man nie Übersetzen, weil dadurch beim Kunden nur mehr Verwirrung entsteht. Ich schreib in meinen Dokumentationen ja auch nicht "Wenn Sie den Knopf 'Abbrechen' drücken dann...", sondern "Wenn Sie den Button 'Abbrechen' drücken dann...".

Und ehrlich gesagt, gehe ich immer! davon aus, das die Kunden auch ein wenig Englisch beherrschen um Sachen wie "Button, Client, Server" übersetzen zu können. Und selbst wenn Sie es nicht übersetzen können, dann wenigstens was es bedeutet.

Kommt immer auf die Zielgruppe an. Für "Button" würde sich meiner Meinung nach z.B. "Schaltfläche" anbieten.

Wobei ich "Client" auch nicht eindeutschen würde.
Also "vom Client festgelegt".
Klingt auch wesentlich besser. Und "Clienten" hab ich auch noch nie gehört/gelesen!

16.11.2007 - 12:19 Uhr

Kann es sein dass die lange Zeile von dir nur vom Editor umgebrochen wird? Kann mir kaum vorstellen dass dort wirklich ein echter Umbruch ist (LF/CR). Dann sollte nähmlich auch Khalids Vorschlag gehen.

28.10.2007 - 00:01 Uhr

Im MSDN-Forum gab es auch jemanden mit dem Problem:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1967903&SiteID=1

Verschieb mal das message.Dispose() direkt nach Client.Send() im Try-Block (das nachfolgende message.Attachments.Remove(mitDabei); brauchst du glaub ich gar nicht) bzw. füge es dort zusätzlich hinzu.

Habs dir mal umgeschrieben


public void Mails()
        {
            string SenderUsername = txtSenderUser.Text;
            string SenderPW = txtSenderPW.Text;
            string SenderMail = txtSenderMail.Text;
            string SenderHost = txtHost.Text;
            string ReceipMail = txtReceipMail.Text;
            string ReceipSubject = txtReceipSubject.Text;
            string ReceipMessage = txtMessage.Text;

            SmtpClient Client = new SmtpClient();

            
            System.Net.NetworkCredential creds = new System.Net.NetworkCredential("\"" + SenderUsername + "\"", "\"" + SenderPW + "\"");
            Client.Host = SenderHost;
            Client.Credentials = creds;

            MailAddress from = new MailAddress(SenderMail);
            MailAddress to = new MailAddress(ReceipMail);

            string WorkingDir = txtPath.Text;
            string[] allFiles = Directory.GetFiles(WorkingDir, "*.txt");

            int index = allFiles.GetLength(0);

            do
            {

                string ActualFile = allFiles[index - 1].ToString();

                index--;

                Attachment mitDabei;
                mitDabei = new Attachment(ActualFile);

                MailMessage message = new MailMessage(from, to);    
                message.Body = "\"" + ReceipMessage + "\"";
                message.Attachments.Add(mitDabei);
                message.Subject = ReceipSubject;

                try
                {
                    Client.Send(message);
                    message.Dispose();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

            }while index != 0);


Deine Form-Zeilen hab ich weggelassen und deine if(index≤0) am Ende hab ich nicht so ganz verstanden... aber ich denke es sollte so gehen wie ichs geschrieben habe.

01.09.2007 - 20:17 Uhr

Abgesehen davon dass C# dafür nicht die geeignete Sprache ist - viel Spass beim Programmieren! Oder wie war noch gleich die Frage?

29.08.2007 - 10:36 Uhr

Dann erklär ich mal kurz wie ich zu meinem Namen kam:

Im meinem Stammlokal, las ich wieder mal eine Runde Bier bestellen ging und mich die Chefin warten lies muss ich anscheinend mit einem Fuss aufgestampft sein und sie meinte ich erinnere dabei an Rumpelstilzchen.

Naja, die Folge daraus war dass danach immer alles von unserer Runde auf Rumpel notiert wurde - das hat sich ewig dort gehalten, selbst als ich selber nur noch sehr sporadisch auftauchte... und ich hatte mir dort dadurch auch meinen Namen geschaffen - wenn es dann von der Chefin erklärend hies: "Das ist der echte Rumpel!"

Leider hätte ich nicht gedacht dass es so viele Rumpel im Internet gibt!

21.08.2007 - 20:47 Uhr

Verwendest du vielleicht Assemblys die bei dir im GAC installiert sind?

Ausserdem würde ich es auch mal mit dem click-once-deployment versuchen.

In dem Dialog kann man doch auch einen Stack-Trace anschauen, oder täusche ich mich da? - vielleicht hilft dir der auch!

21.08.2007 - 20:41 Uhr

Ich hab zwar mal das 10-Fingersystem gelernt, benutze es aber nur sehr grob abgewandelt - meistens drückt einfach der Finger was am nächsten ist, ob ich da dann auch wirklich ein System dabei habe... dafür klappts sogar blind^^

14.08.2007 - 19:46 Uhr

Habe auch schon ein ähnliches Programm gesehen - laut Beschreibung ändert es das Hintergrundbild (ohne die Vorlage zu ändern). Ich denke das wird auch so ziemlich die einzige Möglichkeit sein wenn du hinter allen Desktop-Objekten sein willst.

EDIT: Hier wird beschrieben wie man ein neues Wallpaper setzt. Vielleicht kann man das aktuelle auslesen, und geändert wieder setzen.
http://www.codeproject.com/csharp/WallChange.asp

14.08.2007 - 12:26 Uhr

Meinst du die Debug-Ausgabe im VS? Dort werden auch Exceptions angezeigt die in einem Try-Block auftreten, also abgefangen werden.

Wenn du aber nicht weisst wo die Exception auftritt oder wo sie geworfen wird, kann dir keiner sagen ob du dir das nochmal anschauen sollst.... das kannst du nur selber in deinem Code nachschauen und bewerten.

12.08.2007 - 22:35 Uhr

Wenn du den Array an Form2 übergibst und und dann in der Form ein Verweis darauf speicherst bleibt das Array erhalten und nicht kopiert.

In Form2 sollte das dann ungefähr so aussen:

private float[,,] _DrawNodes;

public Form2(float[,,] Nodes, int ItemsPerArea);
{
            DrawNodes = Nodes;
            Area = ItemsPerArea;
}

(Dein Konstruktor hab ich jetzt mal einfach mal geraten)

Wichtig ist dass die Anweisung

DrawNodes = new float[64, Nodes.Length / 3, 3];

den Speicher für das Objekt auch schon belegt - Wenn du nur eine Referenz (= Pointer) übergibst ist das unnötig und du brauchst nur den Typ zu deklarieren.

09.08.2007 - 11:53 Uhr

Original von Authority
8o 60€ ist ja schon ein ganz schöner Batzen. Könnt ihr die wirklich empfehlen ?

Vielleicht gibt eine gut ausgestatte Bibliothek in deiner Nähe wo du in verschiedene Bücher mal reinstöbern kannst, denn Preise für Fachbücher sind wirklich recht hoch.

Natürlich gibts noch viele andere Bücher die empfehlenswert wären, jedes hat so seine eigene Schwerpunkte und erläutern verschiedene Dinge auf verschiedene Weise. Ist also oft auch abhängig vom persönlichen Geschmack oder vom Schwerpunkt der eigenen Interessen.

Das Internet selber ist aber gerade für Grundlagen eigentlich meine bevorzugte Quelle von Informationen. Gerade das Openbook ist sehr gut. Ansonsten verschiedene Tutorials oder Beispiele anschauen. Oder gleich selber ein kleines Projekt beginnen. Meistens tauchen dann genug Fragen auf die sich über Artikel im Internet klären lassen und bringen so einen guten Lerneffekt mit.

Das Framework-Buch hatte ich dir empfohlen weil es wirklich gute Informationen liefert, die man so nur schwer im Internet findet - eines der Bücher wo ich es wirklich nicht bereut habe es zu kaufen, va. weil weil ich ja eigentlich nur hobbymäßig programmiere und mein Budget recht knapp ist 😉
Aber das ist natürlich auch nur mein Urteil!

07.08.2007 - 13:08 Uhr

Für einen besseren Überblick der internen .Net-Abläufe kann ich das Buch "Microsoft .NET Framework Programmierung mit C#" von Jeffrey Richter wärmstens empfehlen.

Es werden die wichtigsten Techniken des Frameworks erklärt ohne langwierig die Programmiersprache selber zu beschreiben. Allerdings sollte man deshalb auch die Grundlagen schon beherrschen.

Edit: Link - Microsoft .NET Framework Programmierung in C#

05.08.2007 - 20:47 Uhr

Original von DavidT
Danke euch beiden, ich habe den eigentlichen Fehler für das Programm gefunden, kann eure Tips aber trotzdem gut gebrauchen 🙂
Ist der Code mit Debuginfos wirklich so viel langsamer als ohne?

Ich dachte du hast den Fehler gefunden?

16.07.2007 - 09:57 Uhr

Lass das ganze mal ein paar Minuten laufen - hatte ein ähnliches Problem vor einiger Zeit. Irgendwann kam dann eine Exception. Gelöst hab ich das Problem bisher noch nicht, hab mich damit aber auch nicht mehr damit beschäftigt.
Ich konnte keine Methoden von (an den Server) übergebenen Klassen aufrufen - dann ist das ganze gestanden.

15.07.2007 - 12:08 Uhr

Vielleicht hilft dire der System.Text-Namespace weiter.

http://msdn2.microsoft.com/de-de/library/system.text(vs.80).aspx

14.07.2007 - 20:57 Uhr

Steht doch alles drin:

http://msdn2.microsoft.com/en-us/library/system.io.compression.deflatestream.aspx

Beachte folgende 2 Zeilen:

DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Decompress);
int totalCount = DeflateTest.ReadAllBytesFromStream(zipStream, decompressedBuffer);

und die dazugehörende Methode der DeflateTest-Klasse:

 public static int ReadAllBytesFromStream(Stream stream, byte[] buffer) 
    {
    // Use this method is used to read all bytes from a stream.
    int offset = 0;
    int totalCount = 0;
        while (true) 
        {
        int bytesRead = stream.Read(buffer, offset, 100); 
            if ( bytesRead == 0) 
            {
            break; 
            }
    offset += bytesRead;
    totalCount += bytesRead; 
        }
    return totalCount;
    } 

Also sollte eigentlcih eine Read-Methode vorhanden sein...

Aus der MSDN:

Public method Read Overridden. Reads a number of decompressed bytes into the specified byte array.

14.07.2007 - 12:02 Uhr

Ist die Remote-Desktop-Unterstützung von XP nicht das selbe oder vergleichbar? Ich bin mir ganz sicher dass die bei einem Kollegen unter Home funktioniert hat!

Edit: Sorry, wurde ja schon erwähnt und funktioniert ja nur wenn man einlädt! 🙁

13.07.2007 - 21:30 Uhr

Im Abo beziehe ich momentan keine Zeitschrift. Je nach Inhalt greife ich aber zur c't oder auch mal zur ix, sind beides im Vergelich zu anderen Zeitschriften recht Professionell.

"Spezielle" Entwickler-Zeitschriften lese ich eigentlich keine - dort sehe ich einfach kein Vernünftiges Preis/Leistungs-Verhältnis. Besonders die Probeausgaben der visual studio one haben mich da sehr enttäuscht 🙁
Aber vielleicht kennt da auch jemand einen guten Tipp in diesem Sektor?

13.07.2007 - 21:19 Uhr

Ich möchte hier auch noch was dazu sagen, da ich beruflich viel mit Seriellen Schnittstellen zu tun habe:

Einfach das CTS und das RTS-Signal zu verbinden birgt natürlich die Gefahr des Datenverlustes. RTS/CTS-Leitungen sind Handshake-Leitungen die die Bereitschaft der Schnittstellen anzeigen.
Sollte dein Gerät CTS/RTS unterstützen kann ich nur empfehlen das auch zu nutzen (SerialPort.Handshake = Handshake.RequestToSend).
Eventuell fehlt aber auch das DTR-Signal. Viele Geräte bestehen darauf.

rudi:

.aber wie kann ich mehr info über gerät aufrufen? zum beispiel 'name' oder andere info für indentität?

Die serielle Schnittstelle ist einfach nur eine serielle Schnittstelle. Informationen über das Gerät wirst du nur über Kommunikation mit diesem bekommen. Bei einem Modem zum Beispiel mit den entsprechenden AT-Befehlen (ATI etc.)

Das Event DataReceived sollte übrigens ganz normal funktionieren, wobei natürlich der ReceivedBytesTreshold beachtet werden muss (wie schon richtig bemerkt wurde), sollte das Gerät kein EOF-Byte senden.

12.07.2007 - 21:53 Uhr

Bitte entschuldige dass ich jetzt keine Antwort habe - aber was ist ein "Testprojekt"?

Edit: Danke, für die Erklärung!

12.07.2007 - 21:45 Uhr

Warum startest du dann GetListfromDB nicht in einem eigenen Thread? Der Sinn dahinter ist ja dass zeitaufwändige Berechnungen im Hintergrund ausgeführt werden, damit die GUI ansprechbar bleibt.

Über Beginn, Zustand und Ende der Operation kannst du dich dann ja über Events informieren, die Threads synchronisieren und den Ablauf der Main wieder aufnehmen...

04.07.2007 - 23:04 Uhr

Du könntest die Auswahl über Events steuern:

private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    int i = 0;
    try
    {
          i = int.Parse(e.KeyChar.ToString());
          i--; //Index beginnt bei 0
          //Eventuell den Wert noch auf 0 und Items.Count clippen
          comboBox1.SelectedIndex = i;
    }
    catch { }
}

Ist halt mit mehr Aufwand verbunden. Du könntest natürlich auch eine eigene ComobBox-Klasse ableiten und den Code fix eincodieren, dann wäre das Steuerelement einfacher wiederzuverwenden.

21.06.2007 - 11:28 Uhr

Hat die Exception eine InnerException? Wahrscheinlich ist die RemoteException nur ein Container üfr die eigentliche Exception.

18.06.2007 - 20:47 Uhr
string innerXPathExpression = "//description";

Sollte diese Zeile nicht

string innerXPathExpression = "/description";

heißen? Also nur mit einem führenden "/" ? ich war der Meinung das "//" das erste Vorkommen im Dokument und nicht des aktuellen Knoten findet.

EDIT:

Oder probiers mal einfach mit

string innerXPathExpression = "description";

also ohne Schrägstrich. Sollte eigentlich gehen

18.06.2007 - 20:40 Uhr

Das geht nicht direkt über C# - die Funktionen stecken in der Windows SetupAPI.dll

Ich stand mal vor dem selben Problem - schau dir das Tool Devcon an. Ist ein Tool von microsoft um in der Commandozeile z.B. eben solche Aufgaben zu lösen. Gibts inkl. Source.

Ansonsten kann ich dir mal meinen Source schicken. Der ist aber ganz schön durcheinander und wirklich schwer zu lesen und es sind noch andere Dinge dabei, ich musste z.B. überwachen ob ein Kabel angesteckt wurde usw. - war eines meiner Ersten C# Projekte 😉


PS: Ich glaube unter Vista geht das inzwischen schon über Windows Managment Console...
Link zu Devcon: http://support.microsoft.com/kb/311272
Der Source ist in der DDK, link gibts auf obiger Seite.

09.06.2007 - 13:03 Uhr

Ich möchte mich auch anschließen - ich bin froh ein professionelles Forum gefunden zu haben, in dem einem wirklich geholfen werden kann. Ich hoffe ich kann in Zukunft auch wein wenig dazu beitragen. 👍

28.05.2007 - 13:57 Uhr

Am Client die Implementierung von TestClass, aber am Server nur das Interface. Implementierung und Schnittstelle in separaten Assemblies. Hast Du das genau so probiert?

Exakt so hab ich es gemacht.

Der Server läuft auf einem Linux-Debian-System, mit der aktuellsten Version. Compiliert habe ich schon mit .net und mono - keine Verbesserung.

Es funktioniert nur wenn der Server auf den Client einen Channel eröffnet.

Reichlich seltsam das ganz, ich werde noch ein paar Test durchführen. Falls ich noch was finde werde ich es mitteilen.

Ursprünglich ging es einfach darum alle Clients zu Informieren wenn sich ein bestimmter Status auf dem Server ändert. Vielleicht löse ich es über einen eigenen Socket und UDP-Nachrichten. Ist momentan auch nicht dringend, ich hasse es nur wenn ungelöste Probleme im Projekt sind 🙂

Trotzdem, danke für die Hilfe!

27.05.2007 - 23:51 Uhr

Auf dem Client brauch ich zumindest die Implementierung von TestClass - muss ja eine Instanz erzeugen. Hab dafür auf dem Server das entsprechende Interface verwendet.

Das Ergebnis ist das Selbe. Diesmal war ich ein wenig geduldiger, nach ca. 3 Minuten kommt eine Exception "Network Subsystem is down".

Vielleicht kann jemand mit dem Stacktrace was anfangen:


System.Runtime.Remoting.RemotingException wurde nicht behandelt.
  Message="Network subsystem is down"
  Source="System.Runtime.Remoting"
  StackTrace:
    Server stack trace: 
      at System.Runtime.Remoting.Channels.Tcp.HostConnectionPool.CreateConnection () [0x00000] 
      at System.Runtime.Remoting.Channels.Tcp.HostConnectionPool.GetConnection () [0x00000] 
      at System.Runtime.Remoting.Channels.Tcp.TcpConnectionPool.GetConnection (System.String host, Int32 port) [0x00000] 
      at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.ProcessMessage (IMessage msg, ITransportHeaders requestHeaders, System.IO.Stream requestStream, ITransportHeaders& responseHeaders, System.IO.Stream& responseStream) [0x00000] 
      at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage (IMessage msg) [0x00000] 
    Exception rethrown at [0]: 
      at System.Runtime.Remoting.Channels.Tcp.HostConnectionPool.CreateConnection () [0x00000] 
      at System.Runtime.Remoting.Channels.Tcp.HostConnectionPool.GetConnection () [0x00000] 
      at System.Runtime.Remoting.Channels.Tcp.TcpConnectionPool.GetConnection (System.String host, Int32 port) [0x00000] 
      at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.ProcessMessage (IMessage msg, ITransportHeaders requestHeaders, System.IO.Stream requestStream, ITransportHeaders& responseHeaders, System.IO.Stream& responseStream) [0x00000] 
      at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage (IMessage msg) [0x00000] 
    Exception rethrown at [1]: 
       bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
       bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
       bei IremoteObject.Iremoteobject.Test(ItestClass t)
       bei Testclient.client.Main(String[] args) in C:\Dokumente und Einstellungen\Entwicklung\Eigene Dateien\Visual Studio 2005\Projects\Testclient\Testclient\client.cs:Zeile 30.
       bei System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
       bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       bei System.Threading.ThreadHelper.ThreadStart()

🤔 Leider finde ich beim Googeln auch keine Hinweise... Versuchsweise mal alle Firewalls/Virenkiller usw. deaktiviert, auch vom Router und Alle Ports zum Rechner weitergeleitet. Keine Besserung. morgen habe ich einen Laptop zu Verfügung, auf dem werd ichs auch nochmal testen, obs vielleicht an meinem Rechner liegt, und eventuell komm ich noch über einen komplett anderen Standort zu Testen. Und ich werde schauen dass ich die aktuellsten Mono-Versionen auftreibe (Momentan Debian-Stable 1.2.2)

Ich bin normalerweise echt zäh und Suche mir meine Infos im Internet zusammen, aber hier werf ich bald das Handtuch...

27.05.2007 - 20:45 Uhr

Ich habe beide Seiten als TcpChannel eingerichtet. Hier der Source mit dem ich das Problem getestet und zu umgehen probiert habe:

Der Client:

            
BinaryServerFormatterSinkProvider bsfsp = new System.Runtime.Remoting.Channels.BinaryServerFormatterSinkProvider();
bsfsp.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
IDictionary props = new Hashtable();
props["port"] = 0;

IChannel hc = new TcpChannel(props, null, bsfsp);
ChannelServices.RegisterChannel(hc,false);

remoteObject r = (remoteObject)Activator.GetObject(typeof(remoteObject), "tcp://localhost:4321/remoteObject1");
TestClass t = new TestClass();
 r.Test(t);

Eine gemeinsame Assembly:

    public class remoteObject : MarshalByRefObject
    {
        public void Test(TestClass c)
        {
            c.test();
        }
    }

    public class TestClass : MarshalByRefObject
    {
        public void test()
        {
            Console.WriteLine("Test");
        }
    }

Der Server:

           
BinaryServerFormatterSinkProvider bsfsp = new System.Runtime.Remoting.Channels.BinaryServerFormatterSinkProvider();
bsfsp.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
IDictionary props = new Hashtable();
props["port"] = 4321;

IChannel hc = new TcpChannel(props, null, bsfsp);
ChannelServices.RegisterChannel(hc);
            
RemotingConfiguration.RegisterWellKnownServiceType(typeof(remoteObject), "remoteObject1", WellKnownObjectMode.Singleton);            

Funktioniert auch lokal, nur wenn der Serverteil auf meinem Linux-Server läuft funktioniert das nicht mehr - der Client wartet dann immer das der Befehl r.Test(t) zurückkehrt und bleibt dort stehen. Der Server läuft derweil normal weiter und weitere Clients werden normal bedient.

25.05.2007 - 23:24 Uhr

Das sollte gehen:

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument x = new XmlDocument();
            x.Load("test.xml");
            XmlNodeList l = x.SelectNodes("/vs/book[bTitel=\"sau\"]");
            foreach (XmlNode n in l)
            {
                n.ParentNode.RemoveChild(n);
            }
            x.Save("result.xml");
        }
    }
}
25.05.2007 - 23:13 Uhr

Hallo!

Ich hab hier ein Remoting-Problem, dass ich einfach nicht zu lösen bekomme.

Und zwar baue ich eine Verbindung von einem Windows .net-Client zu einem Linux Mono-Server auf. Funktioniert soweit wunderbar, das serverseitige WellKnownObject bekomme ich auch, alle Funktionen klappen prima.

Übergebe ich jedoch dem Serverobject ein Client-Object (mbr) und möchte dann eine Methode ausführen, steht der Client.
Unter .net, wenn ich beide Komponenten lokal laufen lasse funktioniert das Prima, genauso unter Mono.
Nur die Richtung mono->.net scheint nicht ganz zu klappen.

Ich habe inzwischen alles Mögliche probiert, egal wie es mache, methoden, Felder, Events, Sobald ich auf dem Server eine Client-Object-Methode ausführe bleibt irgendwo der Thread stehen. Auf dem Server aber scheint alles normal weiter zu arbeiten.

Das einzige was funktioniert hat war, wenn ich auf dem Client auch ein RegisterwellKnownObject gemacht habe, das ich dann auf dem Server instanziere. Nur ist das Firewalltechnisch und wegen dem nötigen Portforwarding auf dem Router keine wirkliche Alternative, abgesehen davon, dass ich dann die Client-IP brauche.

Kennt vielleicht jemand das Problem und hat eine Lösung? Ich finde einfach nichts dazu...

Gruß, Rumpel