为了账号安全,请及时绑定邮箱和手机立即绑定

我应该为此使用线程吗?

我应该为此使用线程吗?

C#
BIG阳 2023-09-16 15:59:55
我目前正在开发一个销售点程序,该程序可能由使用相同本地数据库的许多计算机使用。我问以下问题是因为现在我已经完成了所有设置,因此一次只有一台计算机使用该程序,这实际上是天真的。然而,我也想知道我是否真的可以在上面实现诸如线程和锁之类的东西,或者我是否只是浪费时间和宝贵的资源。谁能告诉我吗?谢谢你!我将添加可能由不同进程运行的摘录代码: private void PuntoDeVenta_Load(object sender, EventArgs e)    {        //Connect to the local database and check if we successfully connected.        conn = new ConexionBD();        if (!conn.conectar())        {            MessageBox.Show("Hubo un error al conectarse a la base de datos. Favor de verificar.", "Error", MessageBoxButtons.OK);            this.Close();        }        comboBox1.SelectedIndex = 0;        groupBox3.Enabled = false;        this.KeyUp += new System.Windows.Forms.KeyEventHandler(KeyEvent);        string[] detalle = conn.informacionEmpresa();        iva = Convert.ToInt16(detalle[10]);        label15.Text = "Impuesto (" + iva + "%):";        //Get the highest order number until now. Not sure if I need to use Thread here.        String maxPedido = conn.detalleNumeroPedidoMasReciente();        int n;        if (int.TryParse(maxPedido, out n))        {            maxPedido = (n + 1).ToString();        }        else        {            n = Convert.ToInt32(Regex.Match(maxPedido, @"\d+").Value);            String nonNumeric = String.Concat(maxPedido.Where(c => !Char.IsDigit(c)));            maxPedido = nonNumeric + (n + 1).ToString();        }        textBox1.Text = maxPedido;    }
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

像考虑为企业雇用员工一样考虑线程。您什么时候为企业雇用工人?只有当你有很多工作要做时,因为招聘成本很高

理想情况下,仅当满足以下条件时才应创建新线程:

  • 要做的工作是 CPU 密集型的

  • 这项工作很长——肯定超过 30 毫秒,更像是几秒或几分钟的工作。

  • 有一个空闲 CPU 可以 100% 专用于为该线程提供服务。

就您而言,您似乎正在考虑雇用一名工作人员来运行数据库查询。好吧,你会为你的企业雇佣一名工人,他唯一的工作就是发一封信然后他们在等待回复时睡觉吗?当然不是。因此,也不要雇用线程来执行此操作。如果您要执行的高延迟工作不受 CPU 限制,请在单个线程上创建异步工作流程

异步工作流程不会雇用新的工作人员。相反,这就像您发送一封信,在等待回复的同时,您会找到其他工作要做,从而有效地利用您的时间。当回复到达时,您可以从上次中断的地方继续执行“信件工作流程”。


查看完整回答
反对 回复 2023-09-16
  • 1 回答
  • 0 关注
  • 49 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信