gpt4 book ai didi

c# - 我应该为此使用线程吗?

转载 作者:太空狗 更新时间:2023-10-29 23:57:59 25 4
gpt4 key购买 nike

我目前正在开发一个销售点程序,该程序可能会被使用同一本地数据库的多台计算机使用。

我问以下问题是因为现在我已经设置好所有内容,因此一次只有一台计算机使用该程序,这实际上是天真的。但是,我也想知道我是否真的可以在此实现线程和锁之类的东西,或者我是否只会浪费时间和宝贵的资源。

谁能告诉我?谢谢!我将添加一个可能由不同进程运行的摘录代码:

 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;
}

最佳答案

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

理想情况下,您应该仅在满足这些条件时才创建新线程:

  • 要做的工作是 CPU 密集型的
  • 这项工作很长 -- 肯定超过 30 毫秒,更像是几秒钟或几分钟的工作。
  • 有一个空闲 CPU,可以 100% 专用于为该线程提供服务。

在您的情况下,您似乎正在考虑雇用一名员工来运行数据库查询。那么,您会为您的企业雇用一名员工,他唯一的工作就是什么都不做,除了发送一封信,然后付钱让他们在等待时 sleep 回复?当然不是。因此,也不要雇用线程来执行此操作。如果您要执行不受 CPU 限制的高延迟工作,请在单线程上创建异步工作流

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

关于c# - 我应该为此使用线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57595392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com