C# Backgroundworker/线程。搜索时睡眠

C# Backgroundworker/线程。搜索时睡眠,c#,multithreading,backgroundworker,accpac,C#,Multithreading,Backgroundworker,Accpac,我有一个在搜索中使用的后台工作人员。可以执行两种不同的搜索,一种是对SQL数据库的搜索,另一种是对Accpac数据库的搜索。为了适应Accpac数据库执行时间缓慢的情况,我使用Thread.Sleep。问题是,当我在我的SQL数据库上进行搜索时,我会给出一些参数,说明它应该只返回活动记录。如果我移动Thread.Sleep以适应Accpac搜索,那么我的SQL结果将返回所有记录,而不是仅返回活动记录。如果我移动Thread.Sleep以适应SQL搜索,则返回的Accpac搜索结果会出现问题 除了

我有一个在搜索中使用的后台工作人员。可以执行两种不同的搜索,一种是对SQL数据库的搜索,另一种是对Accpac数据库的搜索。为了适应Accpac数据库执行时间缓慢的情况,我使用Thread.Sleep。问题是,当我在我的SQL数据库上进行搜索时,我会给出一些参数,说明它应该只返回活动记录。如果我移动Thread.Sleep以适应Accpac搜索,那么我的SQL结果将返回所有记录,而不是仅返回活动记录。如果我移动Thread.Sleep以适应SQL搜索,则返回的Accpac搜索结果会出现问题


除了Thread.Sleep,还有其他选择吗?

听起来您应该研究线程同步类,比如WaitHandles。手动重置事件可能对您非常有效。

不清楚为什么要使用线程。首先要睡觉。你说的是“适应”缓慢的执行时间,但你根本不清楚这是什么意思。为什么不并行启动这两个查询并等待它们都完成呢?另外,请指出您正在使用的.NET版本,因为.NET 4可能比早期版本有更简洁的答案..NET 4。我们决定使用Thread.Sleep,但在调试时它似乎解决了当时的问题。但它似乎带来了更多未预料到的问题,而不是真正的好处。你还没有告诉我们问题是什么……我在自定义搜索屏幕上有一个busynidicator。问题是,当搜索调用Accpac时,BusyIndicator没有启动,用户还必须单击搜索两次,然后等待(没有BusyIndicator)结果。添加了睡眠,这似乎解决了问题。BusyIndicator显示良好,用户只需单击搜索一次。听起来你以前从未弄清楚为什么它不起作用。(恐怕我不知道BusyIndicator是什么,但添加线程。睡眠几乎从来都不是正确的解决方案。)