Probleme mit animated Waitscreen

06/12/2007 - 09:14 von Uwe | Report spam
Hallo,
ich habe ein Problem mit einem animated Waitscreen.

Folgendes möchte ich tun:

Wàhrend Daten aus dem Internet geladen werden, soll ein animirtes Fenster
(in meinem Fall ein Adobe Flash) anzeigen, dass Daten aus dem Internet
geladen werden sollen.

Wenn ich es so realiere, làuft es nur auf Rechnern auf denen das Visual
Studio làuft. Ansonsten stürzt das Programm beim zweiten Download (Anzeige
Waitscreen) oder beim Schliessen mit der DW20.exe Fehlermeldung "Programm
hat einen Fehler festgestellt und muss beendet werden":

Thread LoadThread = new Thread(new ThreadStart(ShowLoadScreen));
LoadThread.IsBackground = true;
LoadThread.SetApartmentState(ApartmentState.STA);
LoadThread.Start();

... Aktionen ...

LoadThread.Abort();
fWait.Close();


ShowLoadScreen()
{
fWait = new frmWait();
fWait.ShowDialog();
fWait = null;
}

Mit dieser Version wird die Animation auch als Animation angezeigt.

Ich habe dann einen Hinweis bekommen und den Code so umgestellt. Dann stürzt
zwar das Programm nicht mehr ab aber das Flash bewegt sich nicht mehr:

File in der die Ladeaktion ausgeführt wird:

fWait = new frmWait();

... Lade Aktionen ...

fWait.Close();


File das den Wartescreen anzeigt:

public frmWait()

{

InitializeComponent();

Show();

Application.DoEvents();

}

Gibt es auch eine Möglichkeit, die die Animation zeigt aber nicht absztürzt
?



Danke und Gruß

Uwe
 

Lesen sie die antworten

#1 Alexander Rüther
06/12/2007 - 09:58 | Warnen spam
On Thu, 06 Dec 2007 09:14:52 +0100, Uwe wrote:

Folgendes möchte ich tun:
Wàhrend Daten aus dem Internet geladen werden, soll ein animirtes
Fenster (in meinem Fall ein Adobe Flash) anzeigen, dass Daten aus dem
Internet geladen werden sollen.



Du müßtest folgendes beachten:

1. Forms/Dialoge dürfen nicht im Thread ablaufen, dh. der zweite Ansatz
von daher schon mal OK.

2. Du willst etwas parallel machen, also mußt du einen Thread starten. Da
der Dialog nicht als Thread gestartet werden darf, mußt du das Downloaden
als Thread programmieren. (geht gut mit Delegates)

Dann sollte es gehen

Der Effekt beim deinem zweiten Ansatz ist folgender:
Du zeigst zwar das Form an, beschàftigst den Thread in dem der Dialog
làuft allerdings mit dem Downloaden, also kann der Dialog nichts machen,
und "friert" ein.

Infos hier:
http://msdn.microsoft.com/library/d...erview.asp
A.Rüther

Ähnliche fragen