2017-08-25 2 views
0

J'ai une application console qui s'exécute via un planificateur de travaux Web après 15 minutes d'intervalle. Mais le problème est que Application Insight Telemetry n'envoie pas de données sans utiliser Thread.Sleep à la fin du code.Application Insight n'envoie pas de données sans utiliser Thread.Sleep

private static void Main(string[] args) 
    { 
     Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = "APPINSIGHTS_INSTRUMENTATIONKEY"; 
     //do others stuff 
     System.Threading.Thread.Sleep(10000); 
    } 

Ici, j'utilise 10 secondes pour le fil de discussion. Mais parfois il manque des données de la dernière partie. Mais, après avoir donné 70 sec ça fonctionne bien.

Je veux savoir, quel est le temps de repos minimum où toutes les données seront envoyées.

Ou, il existe un autre moyen qui n'a pas besoin de Thread.Sleep.

+0

Faites-vous une ou de synchronisation des appels à l'intérieur de // taraudés faire d'autres choses? Si elles sont en cours d'exécution dans un thread différent, ils vont se terminer lorsque le thread principal de la console se termine –

+0

est Non, il n'y pas d'appel async –

+0

Sans voir un peu plus du code en jeu, il va être difficile de commenter –

Répondre

1

Qu'est-ce qui se passe si vous définissez DeveloperMode true comme indiqué here? L'IA n'envoie pas d'éléments de télémétrie directement. Si cela fonctionne en mode développeur, vous devriez peut-être appeler Flush comme indiqué here. Aussi, gardez à l'esprit qu'il peut prendre quelques minutes avant que les éléments apparaissent dans le portail