2014-09-26 2 views
0

Я хочу использовать несколько видов для использования в Awesomium но имеет ResourceInterceptor в WebCore общего пользования я не могу назначить ResourceInerceptor отдельно, Как для того чтобы достигнутьAwesomium IWebview ResourceInterceptor C#

List<myBrowser> browsers = new List<myBrowser>(); 
     WebCore.Started += (se, ea) => { 
     WebCore.ResourceInterceptor = new myResourceInterceptor(); 
     }; 
     for (int i = 0; i < 5; i++) 
     { 
     WebSession session = WebCore.CreateWebSession(folder + "\\b" + i,new WebPreferences()); 
     WebView view = WebCore.CreateWebView(1024, 768, session, WebViewType.Window); 
     myBrowser b = new myBrowser(folder + "\\b" + i,ref view); 
     b.view.Source = "www.google.com".ToUri(); 
     } 




    public class myBrowser 
    { 
     .. . 
    public myBrowser(string data,ref WebView view) 
     { 
      this.dataFolder = data; 
      this.view = view; 
      view.LoadingFrameComplete += view_LoadingFrameComplete;    
     } 
    } 

    // I can get unique WebViewId (request.ViewId) how to route this event to correct "myBrowser" 
    public class myResourceInterceptor: IResourceInterceptor 
    { 
     public ResourceResponse OnRequest(ResourceRequest request) 
     { 
     Console.Write("Request"+request.ViewId); 
     } 
    } 

я могу получить уникальный WebViewId (request.ViewId) в IResourceInterceptor.OnRequest как перенаправить это событие, чтобы исправить экземпляр «myBrowser»

Или есть лучший способ достичь этой потребности?

Я хотел бы получить ответ на этот раз :)

ответ

1

Вы не должны направлять его обратно на правильный экземпляр вручную. Экземпляр mybrowser или веб-сайт, отправивший запрос, получат ответ, когда вы возвращаете ResourceResponse в методе OnRequest. Если по какой-то причине вам действительно нужен экземпляр MyBrowser, сохраните словарь ViewId, MyBrowser, а не только список MyBrowser, тогда вы можете указать нужный браузер. Viewid должен находиться в веб-представлении, которое вы создаете.

Смежные вопросы