WebView2 -Navigation zu etwa: leer und Datei -URL, die gleichzeitig stattfindet - Navigation zur Einreichung der URL, diC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 WebView2 -Navigation zu etwa: leer und Datei -URL, die gleichzeitig stattfindet - Navigation zur Einreichung der URL, di

Post by Anonymous »

Ich habe eine C# WinForms -Anwendung, die den WebView2 -Browser verwendet. Das Formular enthält ein Netz und eine Browseransicht. Wenn ein Benutzer die ausgewählte Zeile im Raster ändert, werden neue Daten abgerufen und eine HTML -Datei basierend auf diesen Daten generiert. Der WebView2 -Browser navigiert dann zur neuen Datei -URL, um den aktualisierten Inhalt anzuzeigen. Für jede Zeilenwechsel treten zwei Navigationen auf: < /p>

Navigieren Sie zu etwa: leer < /code> < /li>
Navigieren Sie zu der generierten HTML -Datei < /li>
< /ol>
Dieser Ansatz hat für die letzten zwei Jahre gut funktioniert. In einigen jüngsten Setups haben wir jedoch festgestellt, dass beide Navigationen (bis etwa: leer und die Datei -URL) fast gleichzeitig auftreten. Infolgedessen wird die Navigation zur tatsächlichen Datei -URL abgebrochen, während die Navigation zu etwa: Blank erfolgreich ist.

Code: Select all

private void NavigateToBlankThenFileAsync()
{
webView2.CoreWebView2.Navigate("about:blank");
var fileUrl = GetHTMLDataAndWriteItIntoFile();
webView2.CoreWebView2.Navigate(fileUrl);
}
Um das Problem zu mildern, habe ich die Logik geändert, um die About zu erstellen: Blank Navigationssynchron - Warten auf die Navigation, bevor die tatsächliche Dateinavigation ausgelöst wird.

Code: Select all

private TaskCompletionSource navigationCompletedTask;

// Call this function when you want to trigger navigation
private async Task NavigateToBlankThenFileAsync()
{
navigationCompletedTask = new TaskCompletionSource();

// Navigate to about:blank
webView2.CoreWebView2.Navigate("about:blank");

// Await navigation to about:blank before proceeding
await navigationCompletedTask.Task;
var fileUrl = GetHTMLDataAndWriteItIntoFile();
// Now safe to navigate to actual file URL
webView2.CoreWebView2.Navigate(fileUrl);
}

// Event handler for navigation completed
private void WebView2_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e)
{
var uri = webView2.Source?.ToString();

if (uri == "about:blank" && navigationCompletedTask != null)
{
navigationCompletedTask.SetResult(true);
navigationCompletedTask = null;
}
}
Frage: Ist dies der richtige Ansatz, um eine verlässliche sequentielle Navigation in WebView2 zu gewährleisten? Verhalten?
Vorschläge oder Feedback zu dieser>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post