Timer et BackgroundWorker
Bonjour
Dans une application pour un client ftp, je dois faire en sorte que le transfert débute à minuit.
Dans cette optique, j'ai donc codé quelques chose comme
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #region Timer
Heure = DateInstant.ToLongTimeString();
Date2 = DateTime.Parse(Heure);
Date3 = DateTime.Parse("00:00:00");
System.TimeSpan Difference = Date3.Subtract(Date2);
string DiffMilli1 = Difference.TotalMilliseconds.ToString();
DiffMilli2 = int.Parse(DiffMilli1);
Tim1.Enabled = true;
Tim1.Interval = -DiffMilli2;
Tim1.Elapsed += new System.Timers.ElapsedEventHandler(Tim1_Elapsed);
#endregion
} |
ainsi que
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| private void Tim1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//int DiffMilli4 = 86400000;
// Récuperation de la date et l'heure du jour
DateTime DateNow = DateTime.Now;
string crdate = DateNow.ToShortDateString();
// Execution code ...........................................
// récupération de la date courrante
DateTime DateNow2 = DateTime.Now;
// conversion date courante au format chaine de caractère STRING
string heure = DateNow2.ToLongTimeString();
// Parse permet de convertir la variable heure en format DateTime
DateTime dt1 = new DateTime();
dt1 = DateTime.Parse(heure);
DateTime dt2 = new DateTime();
dt2 = DateTime.Parse("00:00:00");
// TIMESPAN permet de soustraire 2 date
System.TimeSpan de = dt1.Subtract(dt2);
// milli contiendra la difference entre les 2 dates en millisecondes
string milli = de.TotalMilliseconds.ToString();
int milli2 = int.Parse(milli);
// Toutes les 24H
int milli3 = 86400000 - milli2;
Tim1.Interval = milli3;
/* // Toutes les 24H
int DiffMilli5 = 86400000 - DiffMilli4;
Tim1.Interval = DiffMilli5; */
backgroundWorker1.RunWorkerAsync();
} |
le backgroundWorker est sensé appeler un performClick du transfert :
Code:
1 2 3 4
| private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BoutonTransfertAutomatique.PerformClick();
} |
Cependant il faut utiliser un delegate et des BeginInvoke, et je n'y comprend rien =\
Quelqu'un aurait -il une idée?
Merci d'avance.