Zugriff auf Com-Server(SingleThread) über Corba

C

cos

Hallo,

ich bin gerade dabei mir anzuschauen wie ich über Corba auf einen Com-Server zugreifen kann. Das Problem ist dabei das der Com-Server nicht ThreadSafe ist. Ich habe bisher nur über C++ auf den Com-Server zugegriffen. Bei dem Com-Server ist das Problem, dass ich immer aus dem selben Thread zugreifen kann. In C++ habe ich das Problem so gelöst das ich einen extra Thread eröffnet habe und dann aus den anderen Threads (Wenn ein Corbaaufruf kam) immer diesen Thread gestartet und nach durchgeführter Arbeit angehalten habe. Damit wurden alle Com-Server-Aktionen in einem Thread durchgeführt. Da ich neu im C# Umfeld bin weiß ich nicht genau wie ich das unter C# machen kann. Ich habe bisher gelesen das es bei C# delegate gibt mit dem man sowas vielleicht auch lösen kann. Ich poste mal ein kleines example und vielleicht weiß jemant wie ich das machen kann.

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using Ch.Elca.Iiop.Idl;
using Ch.Elca.Iiop;
using Corba;

namespace IIOPServer
{
    class Implementation : MarshalByRefObject, Corba.Example
    {
        ProjectLib.Wrapper myWrapper = new ProjectLib.ProjectLibWrapperClass();

        public override object InitializeLifetimeService()
        {
            return null;
        }

        public void init(string Name, string Project)
        {
            //Wird aus einem neuen Thread aufgerufen
            myWrapper.init();
        }

        public void switchE(string Name, string Project)
        {
            //Wird aus einem neuen Thread aufgerufen
            myWrapper.switchE(Name, Project);
        }

        public void deInit()
        {
            //Wird aus einem neuen Thread aufgerufen
            myWrapper.deInit();
        }
    }
}

ich müßte halt irgendwie sicherstellen das alle Aufrufe in ein und den selben Thread aufgerufen werden. Vielleicht so ein Art marshalling. Vielleicht hat jemand dazu eine Idee. Wenn Unklarheiten bestehen fragt, dann erläutere ich meine Frage genauer.

Ich habe im Zusammenhang mit Windows Forms gelesen das Aktionen auf einen Komponente auch an den Thread weitergeleitet werden können wo die Windos Forms-Komponente erstellt worden ist. Kann ich sowas auch dafür verwenden und wenn wie?

Gruß
cos
 
Zuletzt bearbeitet von einem Moderator:
Zurück