Developers » Windows » Fonctionnalités avancées » Envoi des hits en arrière-plan
Envoi des hits en arrière-plan
Intérêt de lidentification
Lidentification vous permet de distinguer les hits envoyés suite à lutilisation directe de votre application, des hits envoyés automatiquement et indépendamment de lutilisateur en arrière-plan, à laide dun BackgroundWorker par exemple.
Marquage
Le tracker possède un objet Context qui possède une propriété BackgroundMode. Cest une énumération de type BackgroundMode.
Par défaut, cette propriété est positionnée à Normal. Dans tous les cas de marquage dun comportement automatique et indépendant de lutilisateur, il faut la positionner à Task.
Dans le cas d’une BackgroundWorker, il est recommandé dutiliser une instance de tracker dédiée. Si vous souhaitez utiliser une seule instance de tracker, il faut alors penser à repositionner la propriété à Normal à la fin de lexécution du BackgroundWorker.
Exemples de marquage
- Marquage d’un BackgroundWorker avec un tracker dédié
private void bw_DoWork(object sender, DoWorkEventArgs e) { Tracker bgTracker = SmartTag.Instance.Tracker("backgroundTracker"); bgTracker.Context.BackgroundMode = BackgroundMode.Task; bgTracker.Gestures.Add("async_download").SendDownload(); // ... } public void BackgroundTask () { BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.RunWorkerAsync(); }
- Marquage d’un BackgroundWorker avec un tracker global
private void bw_DoWork(object sender, DoWorkEventArgs e) { tracker = SmartTag.Instance.defaultTracker; tracker.Context.BackgroundMode = BackgroundMode.Task; tracker.Gestures.Add("async_download").SendDownload(); // ... } private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { bgTracker.Context.BackgroundMode = BackgroundMode.Normal; } public void BackgroundTask () { BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted); bw.RunWorkerAsync(); }