HDSoftware Skrevet 8. september 2009 Del Skrevet 8. september 2009 Hei folkens Vi har et program som er skrevet i Clarion (et annet Win32 system) og skal konvertere mer og mer til C#. Derfor har jeg kommet frem til den geniale løsningen at vi lager en DLL som er selve starteren i Clarion programmet. Dermed vil EXE starteren i Clarion programmet kalle denne DLL'en for å fyre opp systemet. Dermed tilsier det at jeg kan fra .NET laste inn denne DLL'en og starte det fra .NET ved hjelp av Interop, noe som fungerer helt knirkefritt så lenge je kaller prosedyrene. Problemet er derimot at når MDI Framen i Clarion programmet starter så overtar den alt sammen og .NET programmet stopper. Den umiddelbare tanken min er jo at dette er naturlig fordi den faktisk tar over tråden. Dermed tenkte jeg at jeg kunen starte MDI framen i Clarion i en annen tråd. Dette ser ut til å "fungere" men jeg får ikek frem noe som helst på skjermen. Virker som at kunn en tråd i .NET programmet mit har tilgang på desktoppen, men dette kan da umulig være tilfelle. Er det noen der ute som har noen tips angående dette? Lenke til kommentar
GeirGrusom Skrevet 8. september 2009 Del Skrevet 8. september 2009 Hmmmm... det som umiddelbart slår meg, er at Clarion har en egen MDI server som du åpner Windows Forms MDI klienter i? Det er uheldig å blande vinduer i forskjellige tråder, men det skal gå an. Om det derimot er praktisk å vise MDI vinduer i formene til forskjellige tråder er jeg usikker på, siden alle slags synkroniseringsproblemer kan dukke opp. Det jeg tenker skjer, er at MDI tråden tar over message loopen til vinduet. Nå vet ikke jeg noenting om programmet ditt, men jeg ville sett om det ikke var mulig å fjerne GUI fra enten clarion eller .NET modulen, og etter det jeg forstår er vel dette fremtiden for prosjektet allikevel. Lenke til kommentar
HDSoftware Skrevet 8. september 2009 Forfatter Del Skrevet 8. september 2009 Du har så rett så rett. Men nå skal du høre noe veldig pussig Jeg lagde akkurat et test priosjekt for å komem igang og det virker for påkker. Uten å fyre en ny tråd. Jeg kan garantere at dette ike virker i Visual Studio 2005. Men i VS2010 så går dette faktisk helt perfekt. Merkelig.... Lenke til kommentar
GeirGrusom Skrevet 8. september 2009 Del Skrevet 8. september 2009 Når jeg tenker litt etter, burde dette gå fint, selv uten å lage en tråd for hvert program. En ting du kan prøve, er å sikre at Windows Forms fortsetter å polle windows message queue. Kanskje litt søkt dette, og jeg ANER ikke om det fungerer, men det kan være en enkel, om litt grisete, fiks på problemet. Dann en egen tråd som kjører Application.DoEvents i Windows forms. For eksempel: while(app_running) { Application.DoEvents(); Thread.Sleep(0); } Lenke til kommentar
HDSoftware Skrevet 8. september 2009 Forfatter Del Skrevet 8. september 2009 Vel, det ser ut til at dette bare virker nå. Av en eller anne grunn virket nemlig ikke dette for et år siden... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå