1
WindowsフォームからWindowsカメラのUIを呼び出す方法を理解しようとしています。 CaptureFileAsync()のキャストの問題
私はこれをしなかったし、それがコンパイルを行います。Public Function ShootPicture() As StorageFile
Dim captureUI As New CameraCaptureUI
captureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg
captureUI.PhotoSettings.AllowCropping = False
Dim GetPhotoTask As Task(Of StorageFile) = captureUI.CaptureFileAsync(CameraCaptureUIMode.Photo)
GetPhotoTask.Wait() ' Blocks current thread until CaptureFileAsync task completes'
Dim result As StorageFile = GetPhotoTask.Result
Return result
End Function
をしかし.capturefileAsync()の「System.InvalidCastExceptionの」実行エラーがあります:型「System._ComObjectは」System.threading」としてキャストすることはできません.tasks.task '
これを修正する方法はありますか?おかげ
それはここに助けることができる場合は、C#のコードを翻訳したものです:
public StorageFile ShootPicture()
{
CameraCaptureUI captureUI = new CameraCaptureUI();
captureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg;
captureUI.PhotoSettings.AllowCropping = false;
Task<StorageFile> GetPhotoTask = captureUI.CaptureFileAsync(CameraCaptureUIMode.Photo);
GetPhotoTask.Wait();
// Blocks current thread until CaptureFileAsync task completes
StorageFile result = GetPhotoTask.Result;
return result;
}
感謝を。 問題は、保護オーバーライド関数から呼び出されることが予定されているため、関数がAsyncと宣言される必要があり、できません。 (非同期で署名を変更し、オーバーライドに失敗した場合) 私は、非同期ではなく同期の場合にしようとしました。 –
とにかく、私はあなたの解決策を非同期関数で試してみましたが、それはコンパイルされません: 'エラー2:\t表現タイプは'Windows.Foundation.IAsyncOperation(Of Windows.Storage.StorageFile) 'です。したがって、待つことはできません –
オーバーライドしていたメソッドを、エラーが消える非同期デコレータで飾ることができればうれしいです。たぶん、あなたがオーバーライドしているものから呼び出される、このコードを含む新しいAsyncメソッドを作成します。 – N0Alias