Déclencher une action pour démarrer après X millisecondes
Je suis l'élaboration d'un Xamarin Forms application mobile, qui a une page contenant une barre de recherche, une ListView, et de contrôle de la Carte. L'affichage de la liste contient une liste d'adresses, qui sont reflétés dans les pins sur la carte.
Que l'utilisateur tape dans la barre de recherche, la liste est automatiquement mise à jour (par ViewModel de liaison). Le ViewModel de la méthode que les filtres de la source de données pour la liste ressemble à quelque chose comme ça...
void FilterList()
{
listDataSource = new ObservableCollection<location>(
locationData.Where(l => l.Address.Contains(searchBar.Text))
);
//***** Now, update the map pins using the data in listDataSource
}
Je veux mettre à jour la Carte comme la liste est filtrée, mais pas sur CHAQUE pression de touche qui pourraient se produire plusieurs fois par seconde. Essentiellement, je veux un "rolling pause" dans chaque liste de filtres d'événement avant de la Carte est mise à jour. En pseudo-code...
//***** Now, update the map pins using the data in listDataSource
if (a previously-requested map update is pending)
{
//Cancel the pending map update request
}
//Request a new map update in 1000ms using [listDataSource]
Il est possible de le faire à l'aide de la Chronomètre classe, qui est disponible dans les Bibliothèques de Classe, mais je pense qu'il y est un nettoyant/mieux pour accomplir cela en utilisant Tâches.
Quelqu'un peut-il suggérer un "plus malin" PCL-compatible façon de le faire?
source d'informationauteur bosco
Vous devez vous connecter pour publier un commentaire.
vous pouvez essayer :
Juste comme vous l'avez dit ceci peut être accompli dans un très propre chemin à l'aide
Tasks
et de programmation asynchrone.Vous aurez envie de lire à ce sujet: http://msdn.microsoft.com/en-us/library/hh191443.aspx
Voici un exemple:
Voici ce que j'ai fait et cela fonctionne dans mon Xamarin Forme d'applications.
J'ai cette "Recherche" de la Propriété lié à mon champ d'Entrée. Chaque fois que l'utilisateur des filtres de quelque chose, le code attend 1 seconde, puis compare le nouveau champ de Texte avec le terrain, il était avant 1 seconde avant. En supposant que la chaîne est égal implique que l'utilisateur a arrêté d'entrer dans le texte et de code peut maintenant être déclenché à filtre.
De travail dans la dernière xamarin version.
Une autre Excellente méthode sur la façon de clic de bouton est ,
async
etawait
clés sont importants, supposons que si vous travaillez sur multithread de l'environnement.