Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# STA线程中的c web浏览器控件消耗大量使用量_C#_.net_Multithreading - Fatal编程技术网

C# STA线程中的c web浏览器控件消耗大量使用量

C# STA线程中的c web浏览器控件消耗大量使用量,c#,.net,multithreading,C#,.net,Multithreading,我试图用c代码模拟一个web浏览器,因为url有javascript,我打算等他100毫秒从中获取全部内容,最后,我们无法使用web客户端这样的方法直接从中下载,所以我尝试使用web浏览器获取内容,以下是我的代码: var t = new Thread(() => { while (true) { connection = new SqlConnection(

我试图用c代码模拟一个web浏览器,因为url有javascript,我打算等他100毫秒从中获取全部内容,最后,我们无法使用web客户端这样的方法直接从中下载,所以我尝试使用web浏览器获取内容,以下是我的代码:

  var t = new Thread(() =>
            {
                while (true)
                {
                    connection = new SqlConnection(ConfigurationManager.AppSettings["connectionString"]);
                    connection.Open();
                    SqlCommand cmd = new SqlCommand("SELECT top 200 stock_code FROM update_stock_code", connection);
                    DataTable dt = new DataTable();
                    new SqlDataAdapter(cmd).Fill(dt);


                cmd = new SqlCommand("DELETE FROM update_stock_code where stock_code in (select TOP 200 * FROM update_stock_code)", connection);
                cmd.ExecuteNonQuery();
                for (int a = 0; a < dt.Rows.Count; a++)
                {
                    WebBrowser wb = new WebBrowser();
                    wb.DocumentCompleted += Wb_DocumentCompleted;
                    wb.ScriptErrorsSuppressed = true;
                    wb.Tag = dt.Rows[a][0].ToString();
                    wb.Navigate("URL");


                    System.Windows.Forms.Application.Run();
                }
                connection.Close();
                connection.Dispose();

                if (dt.Rows.Count == 0)
                {
                    Thread.Sleep(300000);
                }
            }
        });
        t.SetApartmentState(ApartmentState.STA);
        t.Start();


private static void Wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            var wb = (WebBrowser)sender;
            string content = wb.Document.Body.InnerHtml;
            long milliseconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;

            while (wb.ReadyState != WebBrowserReadyState.Complete)
            {
                long milliseconds2 = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
                if (milliseconds2 - milliseconds > 100)
                {
                    //some code event
                    break;
                }
                System.Windows.Forms.Application.DoEvents();
            }
            System.Windows.Forms.Application.ExitThread();
            wb.Dispose();
            /* ... */
        }

然而,当我使用上面的代码时,它占用了我33%的处理器使用率,我试图打开其中的2个程序,它占用了我100%的CPU,请问如何在它烧坏我的处理器之前减少CPU使用率?我在代码上做了什么错误吗?

为什么要调用应用程序。在循环中运行?@LaneL我尝试过,如果不使用它,它将不会运行已完成的文档