Jeg har et lidt pudsigt problem. Jeg har lavet et program som ligger sig i tray og kører. Når så brugeren eventuelt vil starte endnu et eksemplar af samme program, vil jeg gerne at det allerede kørende program starter en ny tråd op med endnu en instans af programmet, fremfor at der skal startes en helt ny proces op med tilhørende garbage collector osv.
Mit problem er hvordan jeg sendes besked fra den nyligt startede instans af programmet til den allerede kørende, så den der kører kan starte en ny tråd, og den nyligt startede kan lukke sig selv ned igen.
Det skal lige nævnes at programmet ikke arver fra WinForm men istedet ApplicationContext, så det udelukkende kører i Tray. Jeg kan derfor ikke snuppe window handlet og bare sende en message via SendMessage eller PostMessage til hovedvinduet.
Jeg har tænkt på at sætte det første instans op som TCP server, men jeg vil helst ikke bruge ressourcer på det, hvis nu brugeren ikke starter flere instanser op.
Jeg har ligeså tænkt på named pipes, men igen er jeg ret sikker på at "server" delen så skal bruge ressourcer på at stå og lytte, hvilket jeg gerne vil undgå.
Ligeså må det ikke være en løsning der involverer et delay (f.eks. noget fusk med at skrive til en fil, hvor første instans af programmet så tjekker på filen)
Det jeg søger er altså en løsning, der ikke bruger nogle nævneværdige ressourcer på "server" delen (dvs. den første instans man starter op). Om det koster lidt ressourcer når der skal startes ny tråd osv. er ligegyldigt, da det jo kun er en kort periode.
Jeg har skrevet koden i VB.Net, men hvis i har eksempler i C++, C# eller J# er det ligeså godt, jeg skal nok selv konvertere det til VB :-)
Håber problemet er ordentligt beskrevet, ellers må i bede mig uddybe :-)
Hej Steffen
der er også den mulighed for at bruge Query Message til at lave denne kommunikation, men det er tungt, og kræver disiplin, og at support komponentet er installeret i den windows installation du ønsker at afvikle din app på.
Alt. er at du laver en "Q" fil, lidt ala det du selv var inde på.
mit foreslag er at du for hvær instans af din app der bliver startet, skriver den´s handel ned i din "Q" fil og så kan du jo bare tjekke op i mod den hver gang du starter en ny instans.
og så s.flg sletter handelen igen når din instans lukker igen !
Jacob Ipsen