C# 使用BackgroundWorker的SQL同步问题
我有一段代码在C#中运行,使用backgroundworker与SQL server(在VM中)通信 前 在CreateSQLTable函数中,我只有创建SQL表和发送SQL命令,而没有返回任何返回值,超时设置的时间更长,比如120秒,确保SQL服务器完全运行该命令。在RunWorkerComplete中,我使用RunworkerAsync来循环此任务 问题:C# 使用BackgroundWorker的SQL同步问题,c#,sql,sql-server,multithreading,backgroundworker,C#,Sql,Sql Server,Multithreading,Backgroundworker,我有一段代码在C#中运行,使用backgroundworker与SQL server(在VM中)通信 前 在CreateSQLTable函数中,我只有创建SQL表和发送SQL命令,而没有返回任何返回值,超时设置的时间更长,比如120秒,确保SQL服务器完全运行该命令。在RunWorkerComplete中,我使用RunworkerAsync来循环此任务 问题: 从CreateSQLTable()在数据库中不断创建重复表,奇怪的是,它假设只创建一个,但在我的数据库中不断显示更多,甚至我有下面的de
有多线程经验的人能给我解释一下吗?非常感谢:)120秒对于一个简单的
CREATE TABLE
语句来说,听起来像是一个巨大的代码设计/系统架构问题。我怀疑您的问题与工作人员有关,请尝试(每个示例)单击按钮中的代码,并检查它是否具有相同的行为(并调试真正的问题)。如果与SQL无关的任何//xxx方法发生异常,则根据异常处理逻辑,您可能会提前退出该方法,并且该表可能不会被删除。您可能希望在finally
语句中删除表(如果存在)的位置实现try-catch-finally
。@ElementalPete-try-and-catch已应用于整个操作。@Gusman它在本地计算机中运行良好,但在VM中运行将出现上述问题:(通过单击按钮触发)
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
CreateSQLTable();
// xxx methods not related to SQL
DeleteSQLTable();
}
private void backgroundWorker_RunWorkerCompleted(object sender, DoWorkEventArgs e)
{
backgroundWorker.RunWorkerAsync();
}