C#函数调用永远不会到达可执行代码的第一行,仅在特定的pc上

C#函数调用永远不会到达可执行代码的第一行,仅在特定的pc上,c#,sql-server,C#,Sql Server,我有一段代码,用于创建新的SQLServerExpress数据库,然后运行预定义的表生成/填充脚本。这是一项非常直接和简单的任务,代码在正常操作下工作得非常好。在我们的一台测试机器上,这个创建函数在创建DB之后,但在填充DB之前暂停。 它只是挂起,没有错误消息,没有死锁(ui仍然响应),也没有CPU使用 进一步的调查和调试确定执行LoadDatabaseTables()函数调用之前的行,但永远不会到达LoadDatabaseTables()中的第一行。如何准确地调用一个函数,但程序甚至不能执行函

我有一段代码,用于创建新的SQLServerExpress数据库,然后运行预定义的表生成/填充脚本。这是一项非常直接和简单的任务,代码在正常操作下工作得非常好。在我们的一台测试机器上,这个创建函数在创建DB之后,但在填充DB之前暂停。 它只是挂起,没有错误消息,没有死锁(ui仍然响应),也没有CPU使用

进一步的调查和调试确定执行LoadDatabaseTables()函数调用之前的行,但永远不会到达LoadDatabaseTables()中的第一行。如何准确地调用一个函数,但程序甚至不能执行函数的第一行

所讨论的代码是用C#编写的:

到达第一条消息“即将输入加载脚本”,但未显示“已输入加载脚本”,且函数的其余部分不执行,未引发异常,未返回任何内容

不幸的是,这台机器没有运行完全调试所需的工具/许可证,而且问题只发生在这台机器上。消息框显然不包含在代码的常规版本中,而只是用于尝试诊断问题。代码在有或没有这些消息框的其他系统上正常执行


以前有人遇到过这种错误吗?任何帮助都将不胜感激

我认为你没有提供足够的细节。异常处理是做什么的?你查过了吗?功能似乎失败了,那么您的代码是如何处理该故障的?此外,在
finally
块中运行可能失败的代码似乎不太可能是最好的方法。我建议在生成UI上使用适当的记录器来跟踪应用程序的状态。这可以通过nlog/log4net轻松完成。Nuget是你的朋友。如果机器可以运行C#,那么它就有必要的调试工具。@Jonathan Wood:两个编辑部分中的异常处理都会将异常状态和位置打印到日志文件中。日志文件没有新条目。我同意finally块不应该包含可能失败的代码,但这不是我的决定。我没有写这段代码,我只是负责解决这个问题。如果它不能直接解决这个问题,我就无法解决它。
    ...snip...
    bool success=false;
    try
    {
        //...code that creates db, working as intended...
    }
    catch(Exception e)
    {
        //...error handling...
    }
    finally
    {
        //Params is a locally defined struct, containing int, bool, and string members
        if(CreateScript(Params))  //generates appropriate script successfully, returns true
        {
            System.Windows.MessageBox.Show("About to enter load script");
            if(LoadDatabaseTables(Params))
            {
               success=true;
            }
        }
    }
    return success;
}

private bool LoadDatabaseTables(DatabaseParams Params)
{
    System.Windows.MessageBox.Show("Entered the load script");
    bool success = false;
    Server server = null;
    try
    {
        //...sql calls...
        success = true;
    }
    catch (Exception ex)
    {
        //...exception handling...
    }
    return success;
}
...snip...