目前我正在开发一个使用 C# 开发的应用程序。我有一个关于任务的问题。我已经完成了关于任务和异步编程主题的研究。但是我在处理任务时仍然没有完全自信。
此应用程序有一个方法,即 ReadOrWriteDBTable。此方法每秒对 SQL 表执行一次读取或插入操作。基本上这个方法会每秒被调用一次。目前,此方法与应用程序的 GUI 线程在同一线程上运行。刚开始这不是问题,因为表中的数据会非常少,但是随着表中数据量的增加,它会在 GUI 上带来很多问题。因此,我想在与 GUI 线程不同的线程中执行这些数据库操作。
这意味着,每秒钟都应该通过一个新线程调用方法 ReadOrWriteDBTable。这带来了多线程,我相信管理线程池变得很困难。我从 TASKS 了解到的是,多线程的所有复杂操作都完全由一个 TASK 处理。所以我通过以下方式处理了上面的Tasks多线程问题。
public int PollingTrigger
{
get
{
return this.pollingTrigger;
}
set
{
this.pollingTrigger = value;
Task.Factory.StartNew(ReadOrWriteDBTable);
}
}
Public void ReadOrWriteDBTable()
{
// Database select and update….
}
PollingTrigger 属性每秒调用一次,然后为方法 ReadOrWriteDBTable() 创建一个新任务。因为我不需要从任务中返回结果,所以我不使用 Async 和 await 任务的关键字,也不希望执行任何异步操作。我想知道,Tasks 的这种用法是否正确且不受异常影响?每当为属性 PollingTrigger 设置一个新值(每秒在此应用程序中)时,这是否会帮助我启动一个新线程?
我很抱歉这么详细的解释。我只是想把我的问题说清楚。我希望这很清楚。期待您的提示或答案!