Håller på att utveckla ett support-program som kommer användas för support mellan web och desktop. Du kanske kan använda dig av en Timer istället för att stoppa tråden i sleep. Förmodligen så ritas inte fönstret ut just för att du stoppar tråden. Du kan ju antingen ha timern i ditt huvudprogram eller i popuprutan Nja, faktum är att jag får samma fenomen även om jag utesluter raderna skumt... har du gjort någon egen Show() metod? Hur ser den ut i så fall? Ditt fönster visas inte eftersom din tråden inte har någon message pump. En fråga bara, skapar du fönstret innan du öppnar den nya tråden eller inne i den nya tråden? kör inte windowsforms saker i massa trådar. Det kan förklara varför man efter att ha visat fönstret en gång (t.ex. vid applikationens uppstart) får upp fönstret utan problem vid senare tillfälle.Strulig pop-up ruta
Detta gäller desktop-applikationen.
Har gjort en enkel variant av pellesoft/outlook-agenten (jo, det blir ju enkelt i desktopmiljö), men det strular ju såklart.
Om jag lägger upp en testknapp med föjande kod:
<code>
if (!popForm.Visible)
{
popForm.Show();
}
else
{
popForm.Hide();
}
</code>
så funkar det klockrent!
Men om jag använder koden som jag VILL använda så vill inte rutan visa sig, den verkar helt enkelt inte ritas upp ordentligt. Koden ser ut så här:
<code>
popForm.Show();
popForm.setText(string.Empty); // Sätter texten i rutan
Thread.Sleep(5000); // Väntar 5 sekunder, så man hinner läsa
popForm.Hide();
</code>
Enda skillnaden som jag kan komma på, å nu kanske jag svarar på min egen fråga, är att den senare koden ligger inne i en egen tråd.
Frågan: Varför vill mitt fönster inte öppnas???Sv: Strulig pop-up ruta
Sv: Strulig pop-up ruta
<code>
Thread.Sleep(5000);
popForm.Hide();
</code>
Jag får då en ruta som inte stängs, men som fortfarande är genomskinlig alt. helt svart...
Märkte dessutom att formulärets Paint-funktion aldrig körs... Något som kan bringa klarhet i problemet???Sv: Strulig pop-up ruta
Sv: Strulig pop-up ruta
(För dig som sannolikt inte kommer från W32 och C/C++ så är en messagepump
en while-loop som gör GetMessage() för att hämta de WM_XxX som skickas till
ditt fönster)
För att få det att fungera måste du någonstans i din nya tråd anropa Application.Run().
Obs att denna metod är blockerande pga av den ovan nämda while loopen.
Du kan tex lösa problemet genom att skicka in ditt pop fönster objekt till run,
skapa en timer i formLoad och sen låta timern anropa close.Sv: Strulig pop-up ruta
Får du några exceptions?
Kan du inte visa lite mer kod så kanske det går lättare att lösa... Sv: Strulig pop-up ruta
anropa istället dina fönstermetoder via .BeginInvoke för att marshalla anropen från din tråd till appens huvudtråd
//RogerSv: Strulig pop-up ruta
Jag kan ev. infoga lite mer kod under morgondagen..
Tack för alla åsikter/insikter/förslag hittills...