0

Je voudrais avoir un trailing ..... qui augmente/se développe pendant que je cours SqlConnection.Open().Exécuter la sortie de l'hôte d'écriture pendant que SqlConnection.Open() est en cours d'exécution

Je n'arrive pas à comprendre comment procéder et la sortie s'arrête lorsque j'exécute la commande SqlConnection.Open() jusqu'à ce que la connexion soit établie, puis mon code continue.

J'ai essayé une boucle while, mais le contenu while ne fait rien jusqu'à ce que la connexion soit établie ou échoue, ce qui peut prendre de 10 à 15 secondes.

$waiting = ".", ".", ".", ".", "."; 
Try 
{ 
    #write-host -ForegroundColor GREEN "Connecting to SQL Server: $svr" 
    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
    $SqlConnection.ConnectionString = "Server = $svr ;Database = $db; User ID = $uid ;Password = $pwd;" 

    while (!$SqlConnection.State -eq 'Open') 
    { 
     write-host -ForegroundColor GREEN "Connecting to SQL Server: $svr" -NoNewline 
     ForEach ($p in $waiting) { 

      Write-Host -ForegroundColor Cyan "`r$p" -NoNewLine 
      Start-Sleep -Milliseconds 300 
     } 

     $SqlConnection.Open() 
    } 

    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand 
    $SqlCmd.Connection = $Global:SqlConnection 
    $SqlCmd.CommandText = $UsrSqlQuery 
} 
+0

Pouvez-vous nous montrer le code que vous avez déjà? – user2366842

+0

C'est ce que je suis actuellement, il y a eu quelques itérations de do while et d'autres while boucles – catalyph

Répondre

2

Vous avez un seul script fileté. Une fois que vous appelez la méthode .Open, rien ne se passera jusqu'à ce qu'il revienne. Je pense que le multithreading est la seule façon d'obtenir ce que vous voulez. Voici un exemple de multithreading dans PS: multithreading