Millisekunden umrechnen in Std min sec Millisekunden

CopWorker

Erfahrenes Mitglied
Hallo zusammen,

wieder mal ´ne Herausforderung.

Ich möchte in einer while() Schleife auf ein Resultat warten.
Das aber nur eine bestimmte Zeit lang.

Ich gehe so vor:
1. Erst ziehe ich eine aktuelle Zeit "dBegin" (als double) vom System.
2. Dann die Endzeit bilden. Aus Startzeit (dBegin) und (dRuntime).

Für die Runtime habe ich aber nur eine Integer Variable "iRuntime" zur Verfügung.
Das steht die Runtime als Millisekunden.

Wie wandle ich die Millisekunden in die Zeitkonstante um?
iRuntime ---> dRuntime
Ich stehe grade auf dem Schlauch.
Mit Addieren geht halt nicht.

C#:
int iRuntime = 5; //in Millisekunden
double dBegin = 0.0, dEnd = 0.0, dDiff = 0.0, dRuntime = 0.0;

dBegin = DateTime.Now.ToOADate();
dEnd = DateTime.Now.ToOADate() + dRuntime;
thResult = clHttpClient.PostAsync("Tasks", scJsonContent);

while (thResult.Status == TaskStatus.WaitingForActivation)
{
    if(dEnd >= dBegin)
        break;
};


Vielen Dank.
Grüße von CopWorker
 

CopWorker

Erfahrenes Mitglied
Hab´ was gefunden,

geht aber leider nicht.
DateTime.AddMilliseconds(Double) Methode (System)

C#:
dBegin = DateTime.Now.ToOADate();
dEnd = dBegin.AddMilliseconds(dRunTime);

Müsste doch beim meinem .NET Framework (4.6.1) gehen, oder?"
.NET Framework1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8

Kann doch nicht so kompliziert sein.

Grüße von CopWorker
 

Spyke

Premium-User
warum geht AddMiliseconds nicht?

und lass dBegin und dEnd einfach als DateTime, da hast du auch die operatoren < und > zur Verfügung.

Dein problem liegt wohl eher in der schleife, da musst du Now immer aktuell abfragen
C#:
double dRuntime = 5;
DateTime dEnd = DateTime.Now.AddMilliseconds(dRuntime);
thResult = clHttpClient.PostAsync("Tasks", scJsonContent);

while (thResult.Status == TaskStatus.WaitingForActivation)
{
    if(dEnd >= DateTime.Now)
        break;
};


Nachtrag,
ev. beim HttpClient eher Timeout entsprechend setzen?
 

CopWorker

Erfahrenes Mitglied
Hallo zusammen,

bin selber drauf gekommen.
Total falsch interpretiert.

Als kleine Entschädigung für andere Foren Teilnehmer.

C#:
double dBegin = 0.0, dEnd = 0.0, dAct = 0.0, dRunTime = 10.0;

dBegin = DateTime.Now.ToOADate();
dEnd = DateTime.Now.AddMilliseconds(dRunTime).ToOADate();

//Request vom Client abfeuern
thResult = clHttpClient.PostAsync("Tasks", scJsonContent);

while (thResult.Status == TaskStatus.WaitingForActivation)
{
    if ((dAct = DateTime.Now.ToOADate()) >= dEnd)
    {
        iRet = 255;
        break;
    }
}

dRunTime = dAct - dBegin;

Trotzdem vielen Dank.
Grüße von CopWorker
 

Spyke

Premium-User
Willst du wirklich dRuntime neu setzen?
Wenn der Result jetzt mal weniger als 10 Milisekunden braucht hast du ein kleineres dRuntime und damit bei der nächsten Ausführung weniger Zeit bis zum break.

Nachtrag:
Außer es spielt sich eh alles blos in einer Methode ab, sprich auch dRuntime ist nur in der Methode definiert.
 

Neue Beiträge