public async Task<string> getDetayAsync(string url) { var loadTaskCompletionSource = new TaskCompletionSource<bool>(); void OnLoadEnd(object sender, LoadingStateChangedEventArgs e) { // Sayfa yüklenmesi tamamlandığında tetiklenir if (!e.IsLoading && browser.CanExecuteJavascriptInMainFrame) { loadTaskCompletionSource.TrySetResult(true); } } try { browser.LoadingStateChanged += OnLoadEnd; browser.Load(url); if (await Task.WhenAny(loadTaskCompletionSource.Task, Task.Delay(5000)).ConfigureAwait(false) != loadTaskCompletionSource.Task) { return ("Sayfa yüklenmesi zaman aşımına uğradı."); } var isReady = await browser.EvaluateScriptAsync("document.readyState === 'complete'"); if (!isReady.Success || !(isReady.Result is bool ready && ready)) { return ("Sayfa tam yüklenemedi veya durum uygun değil."); } await Task.Delay(1000); // garanti olsun diye 1 saniye bekliyorum string htmlSource = await browser.GetSourceAsync(); return WebUtility.HtmlDecode(htmlSource); // HTML içeriğini çözümle } catch (TimeoutException ex) { MessageBox.Show($"Sayfa yükleme zaman aşımına uğradı: {url}" + Environment.NewLine + ex.Message); } catch (Exception ex) { MessageBox.Show($"Sayfa yüklenirken hata oluştu: {url}. Detay: {ex.Message}" + Environment.NewLine + ex.Message); } finally { // Olay aboneliğini kaldır browser.LoadingStateChanged -= OnLoadEnd; } return ""; } |