À L'Aide De Fil.Dormir dans Xamarin.Les formes
Je veux exécuter
MainPage = new ContentPage
{
Content = new StackLayout
{
Children =
{
new Button
{
Text = "Thread.Sleep",
Command = new Command(() =>
{
Thread.Sleep(1000);
MainPage.Animate("", x => MainPage.BackgroundColor = Color.FromRgb(x, x, x));
}),
},
new Button
{
Text = "Task.Run + Thread.Sleep",
Command = new Command(async () =>
{
await Task.Run(() => Thread.Sleep(1000));
MainPage.Animate("", x => MainPage.BackgroundColor = Color.FromRgb(x, x, x));
})
},
new Button
{
Text = "Device.StartTimer",
Command = new Command(() => Device.StartTimer(
TimeSpan.FromSeconds(1),
() =>
{
MainPage.Animate("", x => MainPage.BackgroundColor = Color.FromRgb(x, x, x));
return false;
})),
},
}
}
};
J'ai inclus System.Threading
et System.Threading.Tasks
, mais j'ai toujours
Le nom " Fil " n'existe pas dans le contexte actuel.
Ce site suggère que Thread.Sleep
peut être utilisé dans Xamarin.Forms
. J'ai ceci dans un projet partagé, pas un PCL.
Thread.Sleep
devrait être évité en utilisant presque tous les cadres de l'INTERFACE utilisateur (WinForms/WPF/Xamarin.Formes/Silverlight/...) comme il gèle le thread d'INTERFACE utilisateur et entraîne le blocage de l'INTERFACE utilisateur.C'est uniquement pour les besoins de la démonstration, mais merci pour votre ajout.
OriginalL'auteur testing | 2016-03-03
Vous devez vous connecter pour publier un commentaire.
Si vous voulez attendre
de manière asynchrone:
await Task.Delay(10000);
de façon synchrone:
Task.Delay(10000).Wait();
Mais essayez d'éviter de bloquer le thread d'INTERFACE utilisateur pour assurer une bonne expérience utilisateur et de conserver la réactivité de votre application.
À L'Aide De Fil.Dormir dans Xamarin.Les formes
Il y a deux Xamarin.Les formes des modèles:
Xamarin.Les Formes De Bibliothèque De Classes Portable
En raison de la PCL sous-ensemble du mécanisme, vous n'avez aucune chance d'obtenir
Thread.Sleep
.2017 mise à jour: PCLs sont obsolètes, maintenant. Si vous utilisez .netstandard 2.0, vous pouvez utiliser
Thread.Sleep
que vous êtes habitué à elle.Xamarin.Les Formulaires De Projet Partagé
Ce Modèle contient des de plates-formes différentes qui ne prennent pas en charge
Thread.Sleep
. Windows UWP, Xamarin.Android et Xamarin.prise en charge d'iOS, Windows Phone 8.1 et Windows 8.1 pas. Si vous décharger/supprimer les 2 projets, la solution s'appuie. (n'oubliez pas d'utiliser le Système.Le filetage; dans votre Application.cs)Avez-vous une idée de pourquoi
Thread
n'est pas reconnu? Sur la page du lien, il semble que cela fonctionne en quelque sorte.Je pense que vous n'avez pas
Thread.Sleep
en raison d'un autre PCL profil de votre bibliothèque de Base. La plus pris en charge les plates-formes que vous sélectionnez dans la PCL, le moins pris en charge les classes / fonctions que vous pouvez utiliser.Des idées d'où cela peut-il être changé?
C'est parce que le Modèle contient des de plates-formes différentes qui ne prennent pas en charge
Thread.Sleep
. Windows UWP, Xamarin.Android et Xamarin.prise en charge d'iOS, Windows Phone 8.1 et Windows 8.1 pas. si vous décharger/supprimer les 2 projets, la solution s'appuie. (n'oubliez pasusing System.Threading;
dans votre Application.cs.OriginalL'auteur Sven-Michael Stübe
Vous pouvez essayer d'utiliser
si vous souhaitez mettre un retard dans votre fil.
Pour le blocage que vous pouvez faire
Mise à jour de ma réponse à la bloquer. Veuillez vérifier
OriginalL'auteur Rahul Tripathi