我是线程新手,需要帮助。我有一个数据输入应用程序需要花费大量时间来插入新记录(即 50-75 秒)。所以我的解决方案是通过 ThreadPool 发送一个插入语句,并允许用户在插入运行时开始输入记录的数据,该插入返回一个新的记录 ID。我的问题是用户可以在从该插入返回新 ID 之前点击保存。
我尝试放入一个布尔变量,当可以安全保存时,该变量通过来自该线程的事件设置为 true。然后我输入
while (safeToSave == false)
{
Thread.Sleep(200)
}
我认为这是个坏主意。如果我在胎面返回之前运行保存方法,它就会卡住。
所以我的问题是:
- 有没有更好的方法来做到这一点?
- 我在这里做错了什么?
谢谢你的帮助。
道格
编辑以获取更多信息:
它正在插入一个非常大(接近最大大小)的 FoxPro 数据库。该文件有大约 200 个字段和几乎一样多的索引。
在你问之前,不,我不能像以前那样改变它的结构,而且有大量的遗留代码在攻击它。第一个问题是,为了获得一个新 ID,我必须首先在表中找到 max(id),然后对其进行递增和校验。这大约需要 45 秒。然后第一个插入很简单,插入新的 id 和一个 enterdate 字段。该表不是/不能放入 DBC 中,因此排除了自动生成的 id 等。
@joshua.ewer
你的过程是正确的,我认为短期内我只会禁用保存按钮,但我会研究你将其传递到队列中的想法。您是否有任何我应该看一看的 MSMQ 参考资料?