Monitoraggio dell'utilizzo e delle prestazioni nelle applicazioni desktop di Windows classicheMonitoring usage and performance in Classic Windows Desktop apps

Tutte le applicazioni ospitate in locale, in Azure e in altri cloud possono sfruttare i vantaggi di Application Insights.Applications hosted on premises, in Azure, and in other clouds can all take advantage of Application Insights. L'unica limitazione è la necessità di consentire la comunicazione al servizio Application Insights.The only limitation is the need to allow communication to the Application Insights service. Per il monitoraggio delle applicazioni della piattaforma UWP (Universal Windows Platform), è consigliabile usare Visual Studio App Center.For monitoring Universal Windows Platform (UWP) applications, we recommend Visual Studio App Center.

Per inviare dati di telemetria ad Application Insights da un'applicazione di Windows classicaTo send telemetry to Application Insights from a Classic Windows application

  1. Nel portale di Azure creare una risorsa di Application Insights.In the Azure portal, create an Application Insights resource. Scegliere l'app ASP.NET per il tipo di applicazione.For application type, choose ASP.NET app.
  2. Eseguire una copia della chiave di strumentazione.Take a copy of the Instrumentation Key. Trovare la chiave nell'elenco a discesa Informazioni di base della nuova risorsa appena creata.Find the key in the Essentials drop-down of the new resource you just created.
  3. In Visual Studio, modificare i pacchetti NuGet del progetto dell'app e aggiungere Microsoft.ApplicationInsights.WindowsServer.In Visual Studio, edit the NuGet packages of your app project, and add Microsoft.ApplicationInsights.WindowsServer. In alternativa, se si vuole ottenere solo l'API, senza i moduli di raccolta dei dati di telemetria standard, scegliere Microsoft.ApplicationInsights.(Or choose Microsoft.ApplicationInsights if you just want the bare API, without the standard telemetry collection modules.)
  4. Impostare la chiave di strumentazione nel codice:Set the instrumentation key either in your code:

    TelemetryConfiguration.Active.InstrumentationKey = "nome della chiave";TelemetryConfiguration.Active.InstrumentationKey = " your key ";

    o in ApplicationInsights.config, se è installato uno dei pacchetti di telemetria standard:or in ApplicationInsights.config (if you installed one of the standard telemetry packages):

    <InstrumentationKey>chiave</InstrumentationKey><InstrumentationKey>your key</InstrumentationKey>

    Se si utilizza Applicationinsights.config, assicurarsi che le proprietà in Esplora soluzione siano impostate su Build Action = Content, Copy to Output Directory = Copy.If you use ApplicationInsights.config, make sure its properties in Solution Explorer are set to Build Action = Content, Copy to Output Directory = Copy.

  5. Usare l'API per inviare dati di telemetria.Use the API to send telemetry.
  6. Eseguire l'app e visualizzare i dati di telemetria nella risorsa creata nel portale di Azure.Run your app, and see the telemetry in the resource you created in the Azure Portal.

Codice di esempioExample code


    public partial class Form1 : Form
    {
        private TelemetryClient tc = new TelemetryClient();
        ...
        private void Form1_Load(object sender, EventArgs e)
        {
            // Alternative to setting ikey in config file:
            tc.InstrumentationKey = "key copied from portal";

            // Set session data:
            tc.Context.User.Id = Environment.UserName;
            tc.Context.Session.Id = Guid.NewGuid().ToString();
            tc.Context.Device.OperatingSystem = Environment.OSVersion.ToString();

            // Log a page view:
            tc.TrackPageView("Form1");
            ...
        }

        protected override void OnClosing(CancelEventArgs e)
        {
            stop = true;
            if (tc != null)
            {
                tc.Flush(); // only for desktop apps

                // Allow time for flushing:
                System.Threading.Thread.Sleep(1000);
            }
            base.OnClosing(e);
        }

Passaggi successiviNext steps