Dll zugriff von 2 Programmen zur Laufzeit

lemon-tree

Grünschnabel
Guten Tag,

Ich bin gerade am testen, wie ich Parameter eines Programmes in ein anderes bekomme. Mir schreint eine Klassenbibliotek die beste Lösung.
Ich habe in einer Projektmappe 3 Projekte eröffnet... 2 FormAnwendungen(ausfürhbar) und eine Klassenbibliotek.

Die zwei Anwendungen sehen in etwa so aus:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DLL;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        private DLL.Class1 myDllUse;

        public Form1()
        {
            InitializeComponent();
            myDllUse = new Class1();
            label1.Text = myDllUse.getZahl().ToString();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(myDllUse.getZahl().ToString());
        }

        private void button2_Click(object sender, EventArgs e)
        {
            myDllUse.zaehlen();
            label1.Text = myDllUse.getZahl().ToString();
        }
    }
}

und die Klassenbibliotek:

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DLL
{

    public class Class1
    {
        public string str = "HalloWelt";
        private static int i = 0;

        public Class1()
        {
        }

        public void zaehlen()
        {
            i++;
        }

        public int getZahl()
        {
            return i;
        }
    }
}

Einzeln geht der aufruf der Dll. Das problem ist nur wie kann ich nur eine instanz an legen?
Ich dachte, evt. geht es mit static aber das wäre etwas zu einfach gewesen ;)

Ich hoffe ihr versteht mein Problem. Ich habe jetzt etliche Stunden gesucht und nichts gefunden, vielleicht fehlt mir einfach nur der passende Fachausdruck. Vielen dank schönmal für eure Hilfe!

Viele Grüße Matthias
 
Du hast zwei Programme. Diese sollen jetzt miteinander kommunizieren? Verstehe ich dich so richtig?
Ich glaube, du unterliegst einer falschen Annahme. Du kannst die Kommunikation zwischen Programmen nicht über eine "DLL" bewerkstelligen. Jede Anwendung lädt die DLL für sich, d.h. im Arbeitsspeicher wird mehr oder weniger eine Kopie des Codes auf der Festplatte erzeugt. Und das für jede Anwendung separat!

Eine Möglichkeit für dich wären, Ports und TCPListener/TCPClients zu verwenden. Das heißt, du programmierst im Prinzip einen Chat, nur dass Server und Client die selbe IP-Adresse haben (127.0.0.1)

Verstehst du?
 
okey, danke das verstehe ich! uns sonnst gibts da keine andere Lösungsmöglichkeit?

Da wir das Programm dann auf einem Server laufen lassen wollen, wäre das ja dann praktischer oder wie stellt man dazu die Verbinung her?

Denn wir sollen zu einem existierenden programm eine Webausgabe schreiben. Wie bewerkstelligt man das am besten.

Vielen Dank!
 
Zurück