J'ai un thread, dans ce thread j'appelle une méthode qui prend beaucoup de temps à traiter.Lancer une application dans un thread à l'aide d'une minuterie
La méthode a un foreach
en utilisant un compteur pour chaque itération (compteur ++)
Je veux faire:
- Dans
foreach
, si le compteur> 20:- Vérifiez le cas échéant proccess with name = "SendMailService.exe" est en cours d'exécution.
- Si PAS d'exécution, lancez en utilisant
process.start(sendmailservice.exe);
- En cas d'exécution attendez 3 minutes, puis vérifiez à nouveau.
- Une fois le code foreach
- Vérifiez le cas échéant proccess avec name = "SendMailService.exe" est en cours d'exécution.
- Si le processus est en cours d'exécution, attendez la fin du processus.
Tout le monde peut me comprendre? toute aide serait appréciée.
Mon code est:
private void bEnviarAleatorioSeleccionados_Click(object sender, EventArgs e)
{
CrossThreadCalls();
this.bEnviarAleatorioSeleccionados.Enabled = false;
// Threads werden erzeugt
Thread hiloMain = new Thread(
new ThreadStart(EnviarAleatorioSeleccionadosYEnviarCorreo));
hiloMain.Start(); // Threads werden gestartet
}
private void EnviarAleatorioSeleccionadosYEnviarCorreo()
{
string rutaFicheroMp3 = GetRutaFicheroMp3DeLoquendo(textoLoquendo);
int contador = 0;
foreach (ListViewItem item in lstRecientes.Items)
{
if (item.Checked)
{
contador++;
EnviarCorreoParaElementoListView(item, rutaFicheroMp3, item.Text);
}
// DO THE CHECK HERE, EACH 3 MINUTES (TIMER) !!!! HOW ????????
if (contador > 20)
{
var listaP = Process.GetProcesses().FirstOrDefault(
p => p.ProcessName == "ServicioEnvioCorreo.exe");
if (listaP == null)
{
// Iniciar Envio de Correo
EnviarCorreosPorProceso();
}
}
}
EliminarFicheroLoquendo(rutaFicheroMp3);
this.bEnviarAleatorioSeleccionados.Enabled = true;
}
Vous devez marquer ceci avec la langue que vous utilisez. – Andrew
Évidemment VB :) –