J'essaye de récupérer des images de la bibliothèque de médias à un panneau de chaîne dans la liste 'lstImageFromMediaLibrary', essaye également que pendant que les images chargent montrent un écran de chargement using un usercontrol et l'ajoutent à popup.child mais j'obtiens ceci exceeption 'UnauthorizedAccessException' quand je supprimer tout le code lié backgrougWorker pas un tel accès non autorisé est là ....pourquoi est-ce que je reçois .UnauthorizedAccessException?
void backroungWorker_DoWork(object sender, DoWorkEventArgs e)
{
foreach (Picture p in mediaLibrary.Pictures)
{
bitmapImage.SetSource(p.GetThumbnail());
lstBitmapImage.Add(bitmapImage);
}
this.lstImageFromMediaLibrary.ItemsSource = lstBitmapImage;
}
toute aide est appriciated, je l'espère, je me suis fait clair ....
EDIT: ok donc maintenant m faire
BackgroundWorker backroungWorker = new BackgroundWorker();
Popup popup = new Popup();
public PanoramaPage1()
{
InitializeComponent();
showpopup();
init();
}
private void init()
{
backroungWorker.WorkerReportsProgress = true;
backroungWorker.DoWork += new DoWorkEventHandler(backroungWorker_DoWork);
backroungWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backroungWorker_RunWorkerCompleted);
backroungWorker.ProgressChanged+=new ProgressChangedEventHandler(backroungWorker_ProgressChanged);
backroungWorker.RunWorkerAsync();
}
void backroungWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.Dispatcher.BeginInvoke(() =>
{
popup.IsOpen = false;
}
);
}
void backroungWorker_DoWork(object sender, DoWorkEventArgs e)
{
backroungWorker.ReportProgress(10);
}
void backroungWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.InitializePage();
}
private void showpopup()
{
popup.Child = new SplashScreenControl();
popup.Width = 480;
popup.IsOpen = true;
}
private void InitializePage()
{
MediaLibrary mediaLibrary = new MediaLibrary();
List<BitmapImage> lstBitmapImage = new List<BitmapImage>();
foreach (Picture p in mediaLibrary.Pictures)
{
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(p.GetThumbnail());
lstBitmapImage.Add(bitmapImage);
}
this.lstImageFromMediaLibrary.ItemsSource = lstBitmapImage;
}
mais la barre de progression montre juste un point et rien d'autre .....
je suis désolé, mais pouvez-vous s'il vous plaît expliquer un peu plus .... je suis nouveau ici relativly – goldsmit409
@aadilsiddiqui En regardant le code que vous avez ajouté, vous faites votre travail dans le ProgressChanged événement qui est sur le même thread comme application, vous ne recevez aucun avantage de votre arrière-plan. Ce que vous devez faire est ** Faites tout ** de votre travail dans votre événement «DoWork», puis assignez votre lstBitmapImage au 'e.Result' de' DoWork', il sera disponible dans le 'RunWorkerCompleted' Events e.Result dans un formulaire utilisable. Vous utiliserez ensuite l'événement ProgressChanged pour incrémenter votre barre de progression en fonction de la quantité de votre bibliothèque multimédia que vous avez traitée. –
merci je l'ai fait mais j'ai utilisé Dispatcher.BeginInvoke ..... – goldsmit409