Autor Beitrag
thas11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Di 12.04.11 16:19 
Hallo zusammen!

Ich habe ein ProgrammA und ein ProgrammB. Mit dem ProgrammA schreibe ich einfach Statusinformationen für das ProgrammB ständig in ein Textfile.
die Info steht nur in der ersten Zeile (es gibt kein AppendText oder so)

Habe das wie folgt umgesetzt:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
        public bool WriteInfo(string WorkingInfo)
        {
            try
            {
                m_writer = new StreamWriter(m_filePath, false);
                m_writer.WriteLine(WorkingInfo);
                m_writer.Close();
                return true;
            }
            catch (Exception ex)
            {
                GLOBALS.LASTERRROR = ex.Message;
                return false;
            }

        }


Da ich noch ziemlicher cSharp Anfänger bin wollt ich fragen ob jemand dafür eine schönere Lösung empfiehlt oder ob die so passen würde ???
Was mich z.B stört ist dass ich den Stream ständig öffnen/Schließen muss, was natürlich performance kostet... hab aber irgendwie keine andere Lösung gefunden... Da der Text erst mit dem Schließen im File ist...

Vielen Dank & lg,
Wolfi
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 12.04.11 16:47 
Also theoretisch lässt sich sicher auch der Buffer flushen, damit es auch vorher da ist, aber eine Frage:
Warum machst du das nicht per direkter Interprozesskommunikation?

Das über Dateien zu machen ist irgendwie von hinten durch die Brust ins Auge geschossen. :gruebel:

Da gibt es viele Möglichkeiten:
Pipes, MMFs, Windows Messages, Mailslots, dann die ganzen Möglichkeiten der Windows Communication Foundation (die das alles für .NET bündeln soll), ...
thas11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Fr 15.04.11 14:33 
Hallo!


Erstmal Danke für deine Antwort.
Ich sollte mein Problem detailierter beschreiben:

Eine Anwendung ist eine C# Anwendung und die andere eine VB Anwendung.
Ich kenn mich nicht wirklich mit der Interprozesskommunkation zwischen 2 unabhängigen Prozessen aus....
Hab nach deinen Schlagworten gegoogelt hab aber nicht verstanden inwiefern mir das bei meinem Problem weiterhilft...

Die C# Anwendung war am beginn eine DLL wodurch die Kommunikation eigentlich sehr einfach war aber der Auftraggeber hat dann beschlossen, dass er keine DLL in VB einbinden möchte sondern eine konsolenanwendung, die dann von VB aus mit Parametern gestartet wird...

Wie gesagt hab in der Richtung noch nichts gemacht.... daher meine Frage: gibt es irgendwas das sich für die Kommunkation zwischen den beiden Prozessen empfielt ohne dass ich irgendeine Dll in VB extra einbinden muss?

Danke & lg,
Wolfi
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 15.04.11 14:43 
Die einfachste Variante: Lass dir als Parameter den Integer-Wert eines Fensterhandles mitgeben. An das kannst du dann einfach Windows Messages schicken.

Sauberer, aber auch ein wenig schwieriger, ist eine Named Pipe. Diese könnte über den Namen (z.B. auch übergeben) geöffnet werden. dann schreibst du alles da hinein wie in eine normale Datei und auf der anderen Seite wird es ebenso wieder gelesen.
thas11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Mi 20.04.11 07:27 
Hallo!

Danke für die Info!
Werde es ausprobieren und euch dann davaon berichten ... wird nur etwas daueren da ich morgen in den Urlaub fahre ....

lg,
Wolfi