Я хочу, чтобы изображения отображались каждые 10 секунд. Для этого я буду использовать класс Timer, который будет работать следующий peices код:удаление StorageFile в окнах 8
async private void captureImage()
{
capturePreview.Source = captureManager;
await captureManager.StartPreviewAsync();
ImageEncodingProperties imgFormat = ImageEncodingProperties.CreateJpeg();
// create storage file in local app storage
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(
"TestPhoto.jpg",
CreationCollisionOption.GenerateUniqueName);
// take photo
await captureManager.CapturePhotoToStorageFileAsync(imgFormat, file);
// Get photo as a BitmapImage
BitmapImage bmpImage = new BitmapImage(new Uri(file.Path));
// imagePreivew is a <Image> object defined in XAML
imagePreivew.Source = bmpImage;
await captureManager.StopPreviewAsync();
//send file to server
sendHttpReq();
await file.DeleteAsync(StorageDeleteOption.PermanentDelete);
}
В настоящее время я звоню выше функций по нажатию кнопки,
Я хочу удалить файл после переноса изображения, как я буду отправлять его на веб-сервер. Однако я не вижу, что imagePreivew обновляется при нажатии кнопки, тогда как, когда я не удаляю файл, я вижу, что imagePreivew меняется каждый раз, когда я нажимаю кнопку. Также я попытался с CreationCollisionOption.ReplaceExisting, но все равно столкнулся с такой же проблемой. Создание нового файла каждый раз, когда таймер выполняет задачу, лишит много памяти. Как удалить файл ???
Одно предложение: поместите вторичные операции, такие как sendHttpReq и DeleteAsync, в другую функцию async, которую вы можете вызвать, но не ожидаете в captureImage. Таким образом, вы можете вернуться из captureImage и позволить другому материалу работать параллельно. –
@ KraigBrockschmidt-MSFT На самом деле captureImage даже не возвращает задачу, поэтому она выполняется асинхронно, поэтому она будет «возвращаться», как только будет выполнено первое ожидание, так что это не имеет большого значения. –