Exemple #1
0
        public MCSWebBrowser BrowserFromCache(string applicationName)
        {
            WaitForBrowsersToInitialize();

            lock (BrowserStorage)
            {
                if (cache.Count > 0)
                {   // initialized browsers
                    MCSWebBrowser b = cache[0] as MCSWebBrowser;
                    if (BrowserStorage.Children.Contains(cache[0]))
                    {
                        BrowserStorage.Children.Remove(cache[0]);
                    }
                    cache.RemoveAt(0);
                    b.Reset(applicationName);
                    return(b);
                }
                else
                {
                    Debug.Assert(BrowserStorage.Children.Count == 0);
                    Trace.WriteLine("Browser Cache empty, providing uninitialized browser!");
                    MCSWebBrowser b = new MCSWebBrowser();
                    b.Reset(applicationName);
                    return(b);
                }
            }
        }
Exemple #2
0
 private void ClearCache()
 {
     lock (BrowserStorage)
     {
         cache.Clear();
         while (BrowserStorage.Children.Count > 0)
         {
             MCSWebBrowser b = BrowserStorage.Children[0] as MCSWebBrowser;
             BrowserStorage.Children.RemoveAt(0);
             b.Dispose();
         }
     }
 }
Exemple #3
0
 void LoadupCache()
 {
     lock (BrowserStorage)
     {
         for (int i = BrowserStorage.Children.Count; i < cachesize; i++)
         {
             MCSWebBrowser browser = new MCSWebBrowser();
             BrowserStorage.Children.Add(browser);
             browser.BrowserObjectAppeared += browser_BrowserObjectAppeared;
             browser.Navigate("about:blank");    // trigger the load of the browser instance
         }
     }
 }
Exemple #4
0
 public void BrowserToCache(MCSWebBrowser webBrowser)
 {
     lock (BrowserStorage)
     {
         if (allowGrow == false && BrowserStorage.Children.Count >= cachesize)
         {
             webBrowser.Dispose();
             return;
         }
         BrowserStorage.Children.Add(webBrowser);
         cache.Add(webBrowser); // assume this is an initialized browser
         webBrowser.HaltUse();
     }
 }
Exemple #5
0
        private void WaitForBrowsersToInitialize()
        {
            int cacheCount, childrenCount;

            lock (cache)
                cacheCount = cache.Count;
            lock (BrowserStorage)
                childrenCount = BrowserStorage.Children.Count;
            DateTime dtTimeout = DateTime.Now + TimeSpan.FromSeconds(5);

            while (cacheCount == 0 && childrenCount > 0)
            {
                if (DateTime.Now > dtTimeout)
                {
                    lock (BrowserStorage)
                    {
                        for (int i = 0; i < BrowserStorage.Children.Count; i++)
                        {
                            MCSWebBrowser b = BrowserStorage.Children[i] as MCSWebBrowser;
                            if (b != null)
                            {
                                b.Navigate("about:blank"); // try again to get this going
                            }
                        }
                        dtTimeout = DateTime.Now + TimeSpan.FromSeconds(5);
                    }
                }

                // browsers initializing
                System.Windows.Forms.Application.DoEvents();
                lock (cache)
                    cacheCount = cache.Count;
                lock (BrowserStorage)
                    childrenCount = BrowserStorage.Children.Count;
            }
        }