Hur gör man för att få ett program att starta osynligt? Ett fönster ska visas senare, så programmet måste ha möjlighet att ladda fönster. Har inte så stor koll på VB.NET, men det borde vara likvärdigt med C# tycker jag. I C# finns en main-metod, i den anropas Application.Run för att öppna upp första fönstret. Om du väntar med det så rullar programmet helt utan fönster. Borde även gå att öppna ett formulär som man kör .Hide() på tycker jag. Om jag startar med Sub Main istället för ett formulär så blir programmet osynligt, men då avslutas ju programmet direkt Main är klart. När main-metoden har kört klart så finns det inget mer att göra, alltså avslutas programmet. Du får se till att den inte kör klart. Vad ska programmet göra innan formuläret startar? Jo jag förstår varför programmet avslutas, men hur kan man förhindra det? Du förhindrar det genom att köra en loop i main som inte avslutas. Men det borde gå att öppna ett dolt formulär istället, det är säkert enklare. Går det inte öppna med .Show och dölja med .Hide efteråt? Ev. kanske man måste köra .Hide i formulärets Load-händelse eller liknande. Jo jag har för mig att jag har gjort något liknande tidigare, men då ser man ju att fönstret visas en kort stund och sen stängs. Måste ju finnas ett bättre sätt att lösa det. Nu hade jag inte WM emulatorn konfigurerad och orkar inte fixa med det, men såhär borde fungera tycker jag. Först öppnas Form1, 3 sekunder efter det är stängt öppnas det igen (i c# då). Ja det ser helt korrekt ut. Men på vilket sätt hjälper det mig? Jag vill ju ha programmet rullandes utan att formen visas. Låt programmet göra det det ska göra, när ett fönster ska visas anropar du application.run. Problemet är att programmet stannar under tiden fönstret visas. Om du inte vill ha det så så måste du nog ha ett fönster liggandes dolt. Men programmet ska ju ligga vilandes tills någon ringer. Att göra en oändlig loop tills det händer känns ju inte speciellt optimalt. Det måste finnas en loop som körs, annars avslutas applikationen. Det är vad som sker när man anropar Application.Run, det startas en message loop för formuläret. Skillnaden är att du inte behöver koda den själv. Så på ett eller annat sätt måste det finnas kod som körs i applikationen, men den behöver ju inte göra något vettigt (typ pausa med sleep under lämplig tid). Vad består Application.Run av för loop då? Har tyvärr inte koll på i detalj hur message loopen fungerar. Jag är inte så bra på CF. Men finns det typ någon WindowsService i CF? Om det gör det låt en service ligga och vänta på ett samtal och om du får ett samtal starta din app från servicenCF3.5: Starta osynligt
ThomasSv: CF3.5: Starta osynligt
JohanSv:CF3.5: Starta osynligt
I vanliga .NET verkar man kunna strunta i att skicka med ett formulär som en parameter, men i Compact Framework så måste man göra det.
ThomasSv: CF3.5: Starta osynligt
JohanSv:CF3.5: Starta osynligt
Det ska vara till en samtalslogg ungefär, så jag vill att ett formulär visas när någon ringer. Det går kanske att få WM att starta programmet när någon ringer istället?
ThomasSv: CF3.5: Starta osynligt
JohanSv: CF3.5: Starta osynligt
JohanSv:CF3.5: Starta osynligt
ThomasSv: CF3.5: Starta osynligt
[MTAThread]
static void Main()
{
Application.Run(new Form1());
System.Threading.Thread.Sleep(3000);
Application.Run(new Form1());
}
/JohanSv:CF3.5: Starta osynligt
ThomasSv: CF3.5: Starta osynligt
JohanSv:CF3.5: Starta osynligt
ThomasSv: CF3.5: Starta osynligt
JohanSv:CF3.5: Starta osynligt
Det här blir ju att dra väldigt mycket CPU:
Do Until NågotHänder
Loop
Den här koden lär väl inte dra lika mycket, men det blir istället en seg respons på upp till X sekunder:
Do Until NågotHänder
Sleep(X sekunder)
Loop
ThomasSv: CF3.5: Starta osynligt
Om du gör en sleep i 50 eller 100 ms, är det verkligen ett problem med en sådan fördröjning?
JohanSv: CF3.5: Starta osynligt