Screensaver in C#

LL0rd

Erfahrenes Mitglied
Hallo Leute,

ich habe da ein Problem. Ich habe in C# einen Bildschirmschohner geschrieben. Beim Programmstart wird erstmal geprüft, wieviele Monitore am System angeschlossen sind und anschließend wird dann pro Monitor der Screensaver im eigenen Thread gestartet.

Ein Bildschirmschohner ist ja nichts anderes, als eine .exe Datei, die einfach in .scr umbenannt wird. Doch nun habe ich folgendes Problem:

Starte ich die .exe, ist alles OK, der Bildschrimschohner läuft auf allen Monitoren gleichzeitig. Aber starte ich die .scr, so wird der Bildschrimschohner erst auf dem ersten Monitor gestartet, dann auf dem zweiten, dritten, usw.

Kann mir vll. jemand sagen, was der Grund dafür sein kann?
 
Wo liegt das genaue Problem? Dass der Screensaver hintereinander gestartet wird, oder am ersten beendet wird, und dann erst am zweiten läuft, oder wie oder was oder wo?
 
Ja, genau. Also nochmal etwas genauer. Ich starte die .exe.

Der wichtige Teil ist folgender hier:

Code:
public static Thread[] ta = new Thread[10];

                for (i = Screen.AllScreens.GetLowerBound(0); i <= Screen.AllScreens.GetUpperBound(0); i++)
                {
                    ta[i] = new Thread(new ThreadStart(ScreenThread));
                    ta[i].Start();
                    MessageBox.Show(i.ToString());
                }

Um zu sehen, was wie wo wann kommt, habe ich die MessageBox eingebaut. Führe ich die .exe nun aus, so habe ich das erwünschte Verhalten. Der Thread wird gestartet und läuft so vor sich hin, die MessageBox wird parallel dazu angezeigt.

Benenne ich die Datei nun in .scr um, so habe ich was ganz anderes. Da ist nach ta[i].Start(); einfach schluss, solange der Thread läuft. Ist der Thread dann irgendwann mal am Ende (Mausbewegung oder Tastendruck), so gehts mit der MessageBox und dem zweiten Durchlauf weiter.
 
Zurück