private void wMain_Load(object sender, EventArgs e) { [...] // Lancement de la recherche de mise à jour Thread UpdSearch = new Thread(new ThreadStart(DoUpdSearch)); UpdSearch.Start(); }
private void mnuHelpUpdateSearch_Click(object sender, EventArgs e) { DoUpdSearch(); }
public static void DoUpdSearch() { string sCurrentVersionString = Application.ProductVersion; string sCode; using (WebClient HttpClient = new WebClient()) { try { sCode = HttpClient.DownloadString(mksHttpBase + Application.ProductName + ".version.txt"); } catch { return; } HttpClient.Dispose(); } /* --- Ici, dans le cas d'une erreur (fichier non dispo, pas de connexion), il faut qu'il y ait un message dans le cas de l'appel par menu, mais pas dans le cas d'un thread séparé. --- */ Regex Rx = new Regex(@"([0-9]+)\.([0-9]+)\.([0-9]+)"); Match found = Rx.Match(sCode); if (found.Success) { string[] sCurVersionArray = Application.ProductVersion.Split('.'); float fCurVersion = float.Parse(sCurVersionArray[0]) + float.Parse(sCurVersionArray[1]) / 1000 + float.Parse(sCurVersionArray[2]) / 1000000; string sNewVersion = found.Groups[0].Value; float fNewVersion = float.Parse(found.Groups[1].Value) + float.Parse(found.Groups[2].Value) / 1000 + float.Parse(found.Groups[3].Value) / 1000000; if (fNewVersion <= fCurVersion) return; /* --- Ici, dans le cas du return, il faut qu'il y ait un message dans le cas de l'appel par le menu, mais pas dans le cas d'un thread séparé. --- */ [...] /* --- Ici le code télécharge et installe le package, avec dialogue avec l'utilisateur, donc comportement identique dans les deux cas --- */ }
MyType MaFonction(){} void MaFonctionSansRetour(){MaFonction();}
public static void DoUpdSearch(bool ClickUtilisateur = false) { ... if (ClickUtilisateur) MessageBox.Show("Le message"); ...
private void mnuHelpUpdateSearch_Click(object sender, EventArgs e) { DoUpdSearch(true); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionThread UpdSearch = new Thread(new ThreadStart(DoUpdSearch));
Aucune surcharge pour 'DoUpdSearch' ne correspond au délégué 'ThreadStart' D:\Documents\_Portable\Csharp\SynchroDir 3\Sources\wMain.cs
// Recherche de mise à jour. Cette fonction est exécutée dans un thread à part et lancée par wMain_Load public static void DoUpdSearch() { DoUpdSearch(false); } public static void DoUpdSearch(bool direct = false) { string sCurrentVersionString = Application.ProductVersion; string sCode; using (WebClient HttpClient = new WebClient()) { try { sCode = HttpClient.DownloadString(mksHttpBase + Application.ProductName + ".version.txt"); } catch { HttpClient.Dispose(); if (direct) MessageBox.Show("Le fichier de définition de version n'a pu être trouvé.\n" + "Vérifiez éventuellemnt votre connexion Internet.", "Mise à jour", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } HttpClient.Dispose(); } Regex Rx = new Regex(@"([0-9]+)\.([0-9]+)\.([0-9]+)"); Match found = Rx.Match(sCode); if (found.Success) { string[] sCurVersionArray = Application.ProductVersion.Split('.'); float fCurVersion = float.Parse(sCurVersionArray[0]) + float.Parse(sCurVersionArray[1]) / 1000 + float.Parse(sCurVersionArray[2]) / 1000000; string sNewVersion = found.Groups[0].Value; float fNewVersion = float.Parse(found.Groups[1].Value) + float.Parse(found.Groups[2].Value) / 1000 + float.Parse(found.Groups[3].Value) / 1000000; if (fNewVersion <= fCurVersion) { if(direct) MessageBox.Show("Aucune mise à jour disponible.", "Mise à jour", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } [...] /* Le reste du traitement est inchangé puisqu'il y a toujours dialogue */ }