Ich arbeite an einem Projekt, das den Frame vom Server abrufen und auf der Benutzeroberfläche anzeigen muss. Also habe ich diese Methode benutzt, um es kontinuierlich zu bekommen. Aber die ganze Methode läuft auf UI-Thread, so dass es meine Benutzeroberfläche ein wenig blockiert. Haben wir irgendeine Möglichkeit, alle Methoden, die auf dem anderen Thread ausgeführt werden, auszuführen und das Ergebnis zurückzugeben, um die folgenden drei Codezeilen im UI-Thread zu aktualisieren.Ergebnis aus Hintergrundthread abrufen und auf UI-Thread fortlaufend aktualisieren UWP
Hinweis: Ich habe versucht, alle Methode von Task.Factory.StartNew und drei Zeilen unten mit Dispatcher.RunAsync, aber kein Glück zu decken. Weil der Rückgabewert null ist.
//width = 1280, height = 960
private async Task DisplayPreviewTwocamera_Camera1(int width, int height)
{
_isPreviewing = true;
try
{
byte[] buffer;
SoftwareBitmap softwareBitmap;
SoftwareBitmapSource _imageSource;
while (true)
{
if (_isMinimize)
{
return;
}
buffer = await StreamServiceHandler.Instance.GetStreamCamera_First_1();
if (buffer.Length == 0)
{
buffer = null;
continue;
}
softwareBitmap = SoftwareBitmap.CreateCopyFromBuffer(buffer.AsBuffer(), BitmapPixelFormat.Gray8, width, height);
buffer = null;
if (softwareBitmap.BitmapPixelFormat != BitmapPixelFormat.Bgra8 ||
softwareBitmap.BitmapAlphaMode == BitmapAlphaMode.Straight)
{
softwareBitmap = SoftwareBitmap.Convert(softwareBitmap, BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied);
}
//three lines of code below need to run in UI thread
_imageSource = new SoftwareBitmapSource();
await _imageSource.SetBitmapAsync(softwareBitmap);
image_TwoCamera_Camera_1.Source = _imageSource;
}
}
catch (Exception exception)
{
Debug.WriteLine(exception);
}
}
Können Sie die ganze Klasse zu veröffentlichen, oder pat, wo Sie Aufruf an DisplayPreviewTwocamera_Camera1 – Isma
Ich rufe es von onNavigateTo() -Methode ohne abwarten. Ich lass es einfach brennen und vergaß –
Das ist, was den Thread dann blockiert, wenn Sie diesen Teil teilen, könnte ich in der Lage sein, ein Beispiel zur Verfügung zu stellen. – Isma