hoffe, es ist etwas einfach dumm, aber ich spinne meine Räder.Nehmen Sie Bild mit Windows 10, WinRT
Ich habe ein Surface Pro 4, Windows 10 und Visual Studio 2013 Professional.
Entwickeln von WPF mit C# 4.5.
Zusammenfassend, alles was ich versuche, eine einfache Kamera zu erfassen, um ein Bild zu speichern, ohne auf andere 3rd-Party-Bibliotheken zurückgreifen, habe ich keine Kontrolle über. Der Rest dieses Posts sind Details von anderen Forschungsergebnissen, die ich untersucht und ausprobiert habe und was gescheitert ist und was solche Nachricht vom Compiler.
Wieder einfache Kamera, Bild aufnehmen, auf Festplatte speichern, aber alle async-await-Optionen scheinen Compilerfehler zu werfen.
EDIT 1 SAMPLE CODE
Hier ist Code aus dem Formular WPF. Ich habe nicht einmal Kontrolle in der Form, da ich nicht einmal das "Warten" auf die Kompilierung bekommen kann.
using System;
using Windows.Media.Capture;
using System.Windows;
namespace CameraCapture
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
JustDoIt();
}
private MediaCapture _mediaManager;
private async void JustDoIt()
{
//initialize mediacapture with default camera
_mediaManager = new MediaCapture();
await _mediaManager.InitializeAsync();
if (_mediaManager == null)
MessageBox.Show("Failed Initialize");
await _mediaManager.StartPreviewAsync();
}
}
}
Und mein Projekt hat auch pro andere Verbindungen von unten erforscht, die DLL-Dateien für
System.Runtime.dll and
System.Runtime.WindowsRuntime.dll
Compile Fehler für jeden der ‚erwarten‘
Error 1 'await' requires that the type 'Windows.Foundation.IAsyncAction' have a suitable GetAwaiter method. Are you missing a using directive for 'System'?
und ich habe „mit System;" als erste Zeile. Gibt es noch andere "Wartezeiten" bei der Verwendung von WinRT vs Standard-System-Include?
ENDE EDIT
Ich begann mit https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.capture.cameracaptureui.aspx CameraCaptureUI Klasse
fand ich dann diesen Link https://www.eternalcoding.com/?p=183 Wie spezifische WinRT API von Desktop-Apps nutzen, habe ich versucht, alle Schritte gehen, wie skizziert und bekommen Fehler verbunden mit
erwarten ... haben Sie eine geeignete GetAwaiter-Methode.
So schaute ich über asynch und warten und kam über
How and When to use `async` and `await` , wie und wann async
und await
zu verwenden.
Also verschrottete ich das erste Kamera-Capture-Projekt, startete ein neues, und tat diese Version , die einfache thread.sleep Verzögerung hat, um das Konzept von asynch/erwarten zu zeigen. Dieser Teil funktioniert.
So, jetzt, füge ich den Verweis auf das Projekt zurück und manuell die
<PropertyGroup>
<TargetPlatformVersion>8.0</TargetPlatformVersion>
</PropertyGroup>
hinzufügen bearbeiten die Verweise auf belichten das Windows/Core-pro der ersten Verbindung aussetzen und dann auf die Windows.Media bekommen Zugang , Windows-Speicher. Ich füge nur das erste bisschen Code über die CameraCaptureUI und CaptureFileAsync als nur einen Startpunkt wie ... hinzu
private async void Camera1()
{
var cameraUi = new Windows.Media.Capture.CameraCaptureUI();
var capturedMedia = await cameraUi.CaptureFileAsync(Windows.Media.Capture.CameraCaptureUIMode.Video);
if (capturedMedia == null)
return;
MessageBox.Show("Valid Camera");
}
und einen Compiler-Fehler erhalten:
'erwarten' erfordert, dass der Typ 'Windows.Foundation.IAsyncOperation' eine geeignete GetAwaiter Methode haben. Vermissen Sie eine Verwendungsrichtlinie für 'System'?
Auch zurück in dem ursprünglichen Versuch, Windows-Version über
private async void Camera2()
{
CameraCaptureUI dialog = new CameraCaptureUI();
Windows.Foundation.Size aspectRatio = new Windows.Foundation.Size(16, 9);
dialog.PhotoSettings.CroppedAspectRatio = aspectRatio;
StorageFile file = await dialog.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (file == null)
return;
MessageBox.Show("Valid Storage File Captured");
}
Ich habe sogar System.Runtime und System.RunTime.WindowsRuntime als Verweis auf das Projekt aber noch auf der Kompilierung fehlschlagen.
Was fehlt mir. Ich weiß, dass sich die Dinge zwischen verschiedenen Versionen wie Windows 8.1 und Windows 10 und Upgrades auf Features/Bibliotheken ändern, aber warum warten, funktioniert in eine Richtung, aber nicht in eine andere.
unklar, was die Frage zu viel Hintergrundinformationen ist –