Laden...

Laptop: BackgroundWorker wird durch Energiesparmodus unterbrochen und bleibt es danach

Erstellt von xxtachxx vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.294 Views
X
xxtachxx Themenstarter:in
13 Beiträge seit 2013
vor 10 Jahren
Laptop: BackgroundWorker wird durch Energiesparmodus unterbrochen und bleibt es danach

Hallo Leute,

ich hab ein kleines Problem und zwar.
Ich habe ein Programm erstellt (Ein Chat, der im Hintergrund läuft und nur sich öffnet wenn ne nachricht geschrieben wurde).

Das Problem ist nur das wenn man in den Energiesparmodus geht und dann dann Laptop wieder startet, das der BackgroundWorker unterbrochen ist.

Das Programm läuft wunderbar, aber ein Teil nicht mehr.

Es kommt kein Error oder sonst eine Nachricht die ich posten könnte.

Ich hoffe ihr wisst ein Lösung

U
1.688 Beiträge seit 2007
vor 10 Jahren
X
xxtachxx Themenstarter:in
13 Beiträge seit 2013
vor 10 Jahren

Hätte ja sein können, das es einen allgemein bekannten Fehler dabei gibt von dem ich nichts weiß.

Wie bereits gesagt, erscheint keine Fehlermeldung.
Ich versuche jetzt das Problem anders zu lösen

F
10.010 Beiträge seit 2004
vor 10 Jahren

Der BGW wird nicht unterbrochen, aber die Netzwerkverbindung, also such da mal.

X
xxtachxx Themenstarter:in
13 Beiträge seit 2013
vor 10 Jahren
            while (true)
            {
                Properties.Settings.Default.OfflineTime = DateTime.Now.ToString();
                Properties.Settings.Default.Save();

                Time = DateTime.Now.ToString();
                Date = Time.Split(' ')[0];
                Time = Time.Split(' ')[1];
                FileName = Date.Split('.')[2] + "-" + Date.Split('.')[1] + "-" + Date.Split('.')[0] + "_" + Time.Split(':')[0] + "-" + Time.Split(':')[1] + "-" + Time.Split(':')[2];

                b = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height);
                g = Graphics.FromImage(b);
                m = new Bitmap(Properties.Resources.Curser);

                g.CopyFromScreen(0, 0, 0, 0, b.Size);
                g.DrawImage(m, new PointF(MousePosition.X, MousePosition.Y));
                g.Dispose();
                b.Save(ScreenPath + FileName + ".bmp");

                Thread.Sleep(60000);
            }

Das ist der Code der unterbrochen wird. Im Debugger funktioniert er einwandfrei, aber leider nicht außerhalb.
Danke für die Anregung mit dem Netzwerk, aber leider brauche ich dafür keins ^^

P
660 Beiträge seit 2008
vor 10 Jahren

Hallo,

Es gibt 2 Möglichkeiten:

  1. du Arbeitest mit der WinAPI und reagierst auf die WindowMessage WM_POWERBROADCAST

oder

  1. du schreibst dir einen Dienst, der die Methoden OnPause() und OnResume() der Basisklasse überschreibt und reagierst entsprechend darauf

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

S
145 Beiträge seit 2013
vor 10 Jahren

Hätte ne Vermutung.
Könnte es sein das ev. GDI+ Fehler intern ausgelöst wird, da ev. im standby VirtualScreen Width und height mit 0 zurück gegeben wird.

F
10.010 Beiträge seit 2004
vor 10 Jahren

@xxtachxx:
Genau so etwas macht man im BGW nicht.
Ganz abgesehen davon das Du hier aus einem Thread heraus die UI Updaten willst ( falsch ) solltest du periodische Aufgaben durch einen Timer erledigen lassen.

Und wenn ich

FileName = Date.Split('.')[2] + "-" + Date.Split('.')[1] + "-" + Date.Split('.')[0] + "_" + Time.Split(':')[0] + "-" + Time.Split(':')[1] + "-" + Time.Split(':')[2];

sehe, sorry wird mir schlecht.

Schau dir mal die ToString() funktion von DateTime an.

X
xxtachxx Themenstarter:in
13 Beiträge seit 2013
vor 10 Jahren

Ja ich weis, ich mache nicht die professionellsten Programme. Bin halt erst 18 und mache so was nur neben der Schule. Dementsprechend sehen halt auch die Programme aus.

Aber ich gucke mal. Bin immer froh wenn ich was verbessern kann

F
10.010 Beiträge seit 2004
vor 10 Jahren

Dann Solltest du aber gerade gelernt haben das man erst Grundlagen erliest, und dann probiert das erlernte umzusetzen, nicht andersrum.