Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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# 当时间间隔较短且计时器再次更新数据库和绑定数据时,如何平稳运行?_C#_Asp.net - Fatal编程技术网

C# 当时间间隔较短且计时器再次更新数据库和绑定数据时,如何平稳运行?

C# 当时间间隔较短且计时器再次更新数据库和绑定数据时,如何平稳运行?,c#,asp.net,C#,Asp.net,当计时器间隔较短且计时器勾选运行数据库操作并更新asp.net web用户界面时, 我无法键入文本或选择下拉列表 如何在实时操作数据库时不影响用户的操作 如果有很多用户,恐怕会影响数据库的性能,比如速度慢 我已经将其设置为在更改时更新,但仍然经常干预操作,例如我无法选择dropdownlist或无法在文本框中键入 </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID

当计时器间隔较短且计时器勾选运行数据库操作并更新asp.net web用户界面时, 我无法键入文本或选择下拉列表

如何在实时操作数据库时不影响用户的操作

如果有很多用户,恐怕会影响数据库的性能,比如速度慢

我已经将其设置为在更改时更新,但仍然经常干预操作,例如我无法选择dropdownlist或无法在文本框中键入

</ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" /> 
    </Triggers> 
    </asp:UpdatePanel>
protected void Timer1_Tick(object sender, EventArgs e)
        {
            string[] last_serial_no = new string[Calculator_GridView.Rows.Count];
            string[] last_a1_textbox = new string[Calculator_GridView.Rows.Count];
            string[] last_b1_textbox = new string[Calculator_GridView.Rows.Count];
            string[] last_mp_dropdown = new string[Calculator_GridView.Rows.Count];

            bool change = false;
            for (int i = 0; i < Calculator_GridView.Rows.Count; i++)
            {
                string serial_no = Calculator_GridView.Rows[i].Cells[1].Text;
                string a1_textbox = Calculator_GridView.Rows[i].Cells[2].Text;
                string b1_textbox = Calculator_GridView.Rows[i].Cells[3].Text;
                DropDownList mp_dropdown = (DropDownList)Calculator_GridView.Rows[i].Cells[4].Controls[1];

                //TextBox Result_textbox = (TextBox)Calculator_GridView.Rows[e.RowIndex].Cells[5].Controls[0];

                if (last_serial_no[i] != serial_no ||
                last_a1_textbox[i] != a1_textbox ||
                last_b1_textbox[i] != b1_textbox ||
                last_mp_dropdown[i] != mp_dropdown.SelectedValue)
                {
                    string executestring = "";
                    executestring = "Update cal set a1=" + a1_textbox;
                    executestring = executestring + ", b1=" + b1_textbox;
                    executestring = executestring + ", mp=" + mp_dropdown.SelectedValue;
                    executestring = executestring + ", result=" + (Convert.ToDouble(mp_dropdown.SelectedValue) * Convert.ToDouble(b1_textbox)).ToString();
                    executestring = executestring + " where [識別碼]=" + serial_no;
                    ExecuteDatabase(executestring);

                    change = true;
                }
                last_serial_no[i] = serial_no;
                last_a1_textbox[i] = a1_textbox;
                last_b1_textbox[i] = b1_textbox;
                last_mp_dropdown[i] = mp_dropdown.SelectedValue;
            }

            if (change == true)
            {
                string connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|/db1.mdb";
                OleDbConnection conn = new OleDbConnection(connstr);
                conn.ConnectionString = connstr;

                try
                {
                    conn.Open();
                }
                catch (Exception ex)
                {
                    conn.Close();
                }

                OleDbCommand get_info_cmd = null;
                get_info_cmd = new OleDbCommand("SELECT [識別碼], [a1], [b1], [result], [mp] FROM [cal]", conn);

                OleDbDataReader get_info_Reader = get_info_cmd.ExecuteReader();

                store.Columns.Add(new DataColumn("識別碼", typeof(int)));
                store.Columns.Add(new DataColumn("a1", typeof(double)));
                store.Columns.Add(new DataColumn("b1", typeof(double)));
                store.Columns.Add(new DataColumn("mp", typeof(double)));
                store.Columns.Add(new DataColumn("result", typeof(double)));

                DataRow dr;

                try
                {
                    while (get_info_Reader.Read())
                    {
                        dr = store.NewRow();
                        dr[0] = get_info_Reader["識別碼"].ToString();
                        dr[1] = get_info_Reader["a1"].ToString();
                        dr[2] = get_info_Reader["b1"].ToString();
                        dr[3] = get_info_Reader["mp"].ToString();
                        dr[4] = (Convert.ToDouble(get_info_Reader["b1"].ToString()) * Convert.ToDouble(get_info_Reader["mp"].ToString())).ToString();

                        store.Rows.Add(dr);
                    }
                }
                catch (Exception ex)
                {
                    Error_Label.Text = Error_Label.Text + ex.ToString();
                    conn.Close();
                }
                finally
                {
                    get_info_cmd.Dispose();
                    get_info_Reader.Close();
                    conn.Close();
                }
                storeview = new DataView(store);

                Calculator_GridView.Font.Size = new FontUnit(10);
                Calculator_GridView.DataSourceID = "";
                Calculator_GridView.DataSource = storeview;
                Calculator_GridView.DataBind();
            }
        }

我认为您应该在一个单独的线程中执行DB操作。另外,您是如何更新ASP.Net页面的?

也许您可以向我们展示一些代码。编辑,不仅更新数据库,而且还实时验证文本框,这也会影响操作如果我不更新数据库,只是实时验证文本框,这也会影响操作,例如在文本框中键入