【问题标题】:Parallel Jobs in C# [duplicate]C# 中的并行作业 [重复]
【发布时间】:2018-10-17 06:30:39
【问题描述】:

我有一个 Windows 窗体应用程序,它使用 LAN 上的本地 SQL 服务器。此 Windows 应用程序的某些部分包括在 SQL 上运行一些 SELECT 查询,但每次我通过我的 c# Windows 应用程序运行查询时,它都会冻结并等待 DB 回答。我想知道的是如何让系统在不同的 CPU 等上处理我的数据库作业......所以我的应用程序不会冻结并等待数据库回复,比如你输入的谷歌搜索引擎和同时得到结果。

我真的是 C# 新手,所以请以我能理解的方式回答。

【问题讨论】:

  • 向我们展示连接到数据库的代码以及查询记录的方式可能会有一些好处。没有这个我们只能猜测你做错了什么
  • 您正在执行什么样的选择查询导致计算机死机。您的代码或硬件性能有问题
  • 当我说冻结时,我只是表示我不能再按按钮了。
  • @Vahid.M 发布您的代码。虽然我怀疑你应该寻找例如ExecuteScalarAsync 和async/await,而不是并行执行。有很多重复的问题。如果您需要代码方面的帮助,请在此处发布

标签: c# sql-server multithreading winforms parallel-processing


【解决方案1】:

应用程序冻结,因为您正在从 UI 线程执行数据库调用。您应该在单独的线程中运行耗时的代码(数据库调用、API 调用等)。

您可以使用带有 Async 和 Await 的异步编程来实现此目的。

请阅读Asynchronous Programming 的更多信息,this tutorial 将解释如何在使用 Async-Await 时更新 UI。

private async void ButtonClickHandlerAsync(object sender, EventArgs e)
{
    await Task.Run(() =>
    {
        you can do your time-consuming tasks here;
    });
}

如果您可以将示例代码段与您的问题一起发布,这将有助于给出更准确的答案。

【讨论】:

  • 我该怎么做?
  • 这是一个很好的 TL;DR 的问题。
  • 教程显示您不需要Task.Run 来异步执行查询
猜你喜欢
  • 1970-01-01
  • 2015-07-21
  • 2020-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 2013-04-28
相关资源
最近更新 更多